Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Вопрос о константах


SPeller ©   (2002-08-03 08:29:00) 

Всем доброго времени суток!
Меня вот крайне заинтересовал такой вопрос. Когда мы в модуле в разделе описаний объявляем константу, то загружается ли она в память при работе программы, или же в память создаётся её копия при обращении, или ещё как? Подскажите пожалуйста!


Anatoly Podgoretsky   (2002-08-03 13:28:00) [1]

А как же иначе, в голове что хранить. Вариант с глобальными переменными еще больше потребует памяти, ведь придется еще и инициализировать.


SPeller   (2002-08-03 13:18:00) [2]

Ну хорошо, у меня допустим типизированные константы. Получается что память тратится на их содержание, т.е. они загружаются в память при начале работы программы?


Anatoly Podgoretsky   (2002-08-03 12:22:00) [3]

Не скажется, будет размещена в сегменте кода с соответствующими правами по доступу, но ты сейчас уже говоришь про типизированные констаны, это другое, я же говорил про обычные.


SPeller   (2002-08-03 12:14:00) [4]

Шо-т я не понял про сегменты (извините уж). Если допустим я определю константу-массисв размером в 5 млн. элементов (например), то скажется ли это отрицательно? Или, "создаётся значение в сегменте кода" - это значит что компилятор просто возьмёт и вместо имени константы подставит то что я наопределял?


Anatoly Podgoretsky   (2002-08-03 11:19:00) [5]

Нетипизированные тоже, если не помецается в регист, например строковые, реальные, создается значение в сегменте кода.


Урри   (2002-08-03 10:43:00) [6]

Значения нетипизированных констант (A=1) подставляются компилером непосредственно в код. Типизированные константы (A:integer=1) предсталяют собой обычные переменные, просто при инициализации им присваивается указанное значение.


Слесарь Матерящийся   (2002-08-03 09:57:00) [7]

Должно быть, статически размещается в теле модуля (логический сегмент .data). Дополнительная память не выделяется, т.к. это не нужно.


Наверх

Титульная страница Поиск, карта сайта Написать письмо