IPB

Здравствуйте, гость ( Вход | Регистрация )

6 страниц V  < 1 2 3 4 5 > »   
Reply to this topicStart new topic
> Dark side of Programming, PureBASIC
Guevara-chan
сообщение 12 Jan 2007, 17:13 (Сообщение отредактировал Chrono Syndrome - 12 Jan 2007, 17:21)
Сообщение #41

•●Revolucionario●•
Сообщений: 2 467
Спасибо сказали: 5934 раза




Цитата
а че такое #A, #Z, #Seconds?

Константы.

Цитата
как раз только одной переменной и можно обойтись.

Это как какой раз, если не секрет ? Помниться, ты говорил что, цитрую:

Цитата
можно вообще без переменных.


Цитата
и зачем переменную много раз обьявлять?

Незачем, а что ?

Цитата
хы. а потом прога вылетит

Что за бред o_O ? Поподробней-ка с этого момента, пожалуйста..


--------------------
life MOV.I #life+1, *life
האם יש זמן לעצור ?
Go to the top of the pageAdd Nick
 
+Quote Post
Guevara-chan
сообщение 12 Jan 2007, 17:39 (Сообщение отредактировал Chrono Syndrome - 12 Jan 2007, 17:42)
Сообщение #42

•●Revolucionario●•
Сообщений: 2 467
Спасибо сказали: 5934 раза




shum_lol.gif shum_lol.gif shum_lol.gif
2gamecreator
Так, все, кажеться до меня дошло, что ты пытался сказать... Т.е. по твоему если поместить обьявление переменной в цикл, то она будет аллоцироваться на новое место в памяти при каждом проходе, я правильно поняла ?


--------------------
life MOV.I #life+1, *life
האם יש זמן לעצור ?
Go to the top of the pageAdd Nick
 
+Quote Post
gamecreator
сообщение 14 Jan 2007, 09:54
Сообщение #43

Яблочный произвол!
Сообщений: 11 080
Спасибо сказали: 3988 раз




да. и рано или поздно память закончится и прога вылетит
Go to the top of the pageAdd Nick
 
+Quote Post
Bourn
сообщение 14 Jan 2007, 12:16
Сообщение #44

Immortal
Сообщений: 2 415
Спасибо сказали: 60 раз




2 gamecreator
а допустим в процедуре (покажу на примере BC3.1) ты создаешь локальные переменные что если запускать 1м раз процедуру память закончиться?


--------------------
Не лезь в дела Мудрых. Понять - не поймешь, а хлопот не оберешься.
Go to the top of the pageAdd Nick
 
+Quote Post
gamecreator
сообщение 14 Jan 2007, 12:21
Сообщение #45

Яблочный произвол!
Сообщений: 11 080
Спасибо сказали: 3988 раз




ну я так понял что это цикл в одной функции.
Go to the top of the pageAdd Nick
 
+Quote Post
Bourn
сообщение 14 Jan 2007, 15:31
Сообщение #46

Immortal
Сообщений: 2 415
Спасибо сказали: 60 раз




это и есть цикл в одной ф-и, вроде...smile.gif


--------------------
Не лезь в дела Мудрых. Понять - не поймешь, а хлопот не оберешься.
Go to the top of the pageAdd Nick
 
+Quote Post
gamecreator
сообщение 14 Jan 2007, 16:57
Сообщение #47

Яблочный произвол!
Сообщений: 11 080
Спасибо сказали: 3988 раз




так обьявление переменной внутри цикла
Go to the top of the pageAdd Nick
 
+Quote Post
Bourn
сообщение 14 Jan 2007, 18:44
Сообщение #48

Immortal
Сообщений: 2 415
Спасибо сказали: 60 раз




какая разница что ты запишешь объявление переменной в цикле или запишешь в функции и запустишь ее в цикле?


--------------------
Не лезь в дела Мудрых. Понять - не поймешь, а хлопот не оберешься.
Go to the top of the pageAdd Nick
 
+Quote Post
gamecreator
сообщение 14 Jan 2007, 18:54
Сообщение #49

Яблочный произвол!
Сообщений: 11 080
Спасибо сказали: 3988 раз




никакой. но если обьявить переменную в функции и запустить в ней же цикл, то будет совсем другое
Go to the top of the pageAdd Nick
 
+Quote Post
Guevara-chan
сообщение 14 Jan 2007, 19:09
Сообщение #50

•●Revolucionario●•
Сообщений: 2 467
Спасибо сказали: 5934 раза




Цитата
никакой. но если обьявить переменную в функции и запустить в ней же цикл, то будет совсем другое

С чего ты это взял ?


--------------------
life MOV.I #life+1, *life
האם יש זמן לעצור ?
Go to the top of the pageAdd Nick
 
+Quote Post
gamecreator
сообщение 14 Jan 2007, 19:40
Сообщение #51

Яблочный произвол!
Сообщений: 11 080
Спасибо сказали: 3988 раз




потому что в 1-м и 2-м случаях переменная обьявится много раз, а в третьем лишь 1. но во 2-м случае она в конце функции будет удаляться, но потом при вызове функции снова создастся, так что нормально. а в 1-м случае будет или ошибка или переполнение памяти
Go to the top of the pageAdd Nick
 
+Quote Post
Bourn
сообщение 14 Jan 2007, 19:45
Сообщение #52

Immortal
Сообщений: 2 415
Спасибо сказали: 60 раз




с чего ты взял что она будет удаляться? или ты определяешь все на примере BC? существует же много компиляторов


--------------------
Не лезь в дела Мудрых. Понять - не поймешь, а хлопот не оберешься.
Go to the top of the pageAdd Nick
 
+Quote Post
gamecreator
сообщение 14 Jan 2007, 20:12
Сообщение #53

Яблочный произвол!
Сообщений: 11 080
Спасибо сказали: 3988 раз




ну обычно память под локальные переменные освобождается при завершении функции
Go to the top of the pageAdd Nick
 
+Quote Post
Darth_Beleg
сообщение 15 Jan 2007, 23:36
Сообщение #54

Undead elven necromancer
Сообщений: 195
Спасибо сказали: 15 раз




Память под локальные (автоматические) переменные в C++ освобождается при выходе из блока, в котором они были объявлены. По умолчанию все переменные, объявленные в функциях, являются автоматическими (размещаются в стеке). Для объектов вызывается деструктор.
Цикл for имеет внутри себя блок. В BC 3.1 переменная, объявленная в цикле (ex: for(int i=0;;) ), кажется, остается в стеке и после выхода из цикла, но это не соответствует стандарту. И не стоит забывать про оптимизацию.
Т.о. концом функции все не исчерпывается.
Не вижу причин, почему в PureBasic должно быть по-другому. Впрочем, в классическом Basic переменные объявлять - это пожелание, а не требование. Здесь же вроде даже типизация есть smile.gif


--------------------
Jesus saves... and takes half damage!
Go to the top of the pageAdd Nick
 
+Quote Post
Guevara-chan
сообщение 16 Jan 2007, 11:28 (Сообщение отредактировал Chrono Syndrome - 16 Jan 2007, 11:29)
Сообщение #55

•●Revolucionario●•
Сообщений: 2 467
Спасибо сказали: 5934 раза




В PureBASIC ситуация обстоит немного по-другому: переменные, обьявленные внутри какой-либо синтаксической конструкции (ну, крому ф-ии, понятное дело) ничем не отличаются от всех остальных, т.е.:

Код
For I = 1 To 3
Define A = I
Next

Debug A; Выдаст 3


--------------------
life MOV.I #life+1, *life
האם יש זמן לעצור ?
Go to the top of the pageAdd Nick
 
+Quote Post
Darth_Beleg
сообщение 17 Jan 2007, 08:21
Сообщение #56

Undead elven necromancer
Сообщений: 195
Спасибо сказали: 15 раз




Чем меньше область видимости переменной - тем меньше вероятность ошибки. По крайней мере, таким принципом руководствовались создатели С++.


--------------------
Jesus saves... and takes half damage!
Go to the top of the pageAdd Nick
 
+Quote Post
sergroj
сообщение 07 Feb 2007, 16:59
Сообщение #57

В миру GrayFace
Сообщений: 2 528
Спасибо сказали: 817 раз




Только на самом деле переменная вообще создастся не в стеке, а под нее будет отведен регистр. Если, конечно, компилятор PureBasic что-либо понимает в оптимизации.

Цитата(Chrono Syndrome @ 16 Jan 2007, 15:28)
Код
For I = 1 To 3
Define A = I
Next

Debug A; Выдаст 3

А если так:
Код
Define A = 10

For I = 1 To 3
Define A = I
Next

Debug A;


--------------------
ДНК банана на 50% состоит из человека.
Go to the top of the pageAdd Nick
 
+Quote Post
Guevara-chan
сообщение 08 Feb 2007, 16:02
Сообщение #58

•●Revolucionario●•
Сообщений: 2 467
Спасибо сказали: 5934 раза




Цитата
А если так:

Тоже самое.


--------------------
life MOV.I #life+1, *life
האם יש זמן לעצור ?
Go to the top of the pageAdd Nick
 
+Quote Post
sergroj
сообщение 09 Feb 2007, 00:39
Сообщение #59

В миру GrayFace
Сообщений: 2 528
Спасибо сказали: 817 раз




Криво. В двух модулях переменные с одинаковым именем тоже будут как одна?


--------------------
ДНК банана на 50% состоит из человека.
Go to the top of the pageAdd Nick
 
+Quote Post
Guevara-chan
сообщение 09 Feb 2007, 12:09 (Сообщение отредактировал Chrono Syndrome - 09 Feb 2007, 12:19)
Сообщение #60

•●Revolucionario●•
Сообщений: 2 467
Спасибо сказали: 5934 раза




Цитата
Криво.

Меня устраивает.

Цитата(sergroj @ 09 Feb 2007, 01:39)
Криво. В двух модулях переменные с одинаковым именем тоже будут как одна?

Нет (хотя, конечно, можно сделать чтоб были smile.gif).


--------------------
life MOV.I #life+1, *life
האם יש זמן לעצור ?
Go to the top of the pageAdd Nick
 
+Quote Post

6 страниц V  < 1 2 3 4 5 > » 
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 25 April 2024 - 17:00
Copyright by Алексей Крючков
Strategy Gamez by GrayMage
Programming by Degtyarev Dmitry
  Яндекс.Метрика