IPB
ЛогинПароль:

> Правила раздела!

1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!

 
 Ответить  Открыть новую тему 
> Статическое/Динамическое размещение данных, При каких условиях рационально начинать использовать динамическую памя
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 11
Пол: Мужской
Реальное имя: Игорь

Репутация: -  0  +


Здравствуйте.

Пожалуйста объясните.

Память для переменных может быть выделена статически во время компиляции программы или динамически во время работ программы. Если память выделена статически, то все переменные будут расположены в одной непрерывной области памяти - сегменте данных, размер которого не превышает 65536 байт память выделенная переменным отсается за переменными до конца работы программы.

Динамическая память может быть выделена в процессе выполнения программы по требованию. Одной из причин для использования динамической пвмяти является массива больше 64 Кбайт.

Вот здесь возникает вопрос.

Вопрос: Правильно ли начинать использовать динамическую память если объем памяти переменных (при отсутствии констант) не превышает 64Кбайта? Создается ли сегмент данных статических переменных если такие не создаются, ведь указатель на динамическую переменную тоже переменная? Сегмент данных выделяется в объеме по требованию или сразу в размере 64Кбайт?

Пожалуйста, объясните, литературу по данной теме.

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Цитата
Правильно ли начинать использовать динамическую память если объем памяти переменных (при отсутствии констант) не превышает 64Кбайта?
Понимаешь в чем дело... Ведь в Паскале (речь сейчас о 16-битных версиях, разумеется, с 32-битными попроще будет) для всех модулей выделяется один сегмент данных. Вот здесь - подробнее: Как не надо писать программы

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

Цитата
Создается ли сегмент данных статических переменных если такие не создаются
Это не важно, создаешь ты или нет переменные. К каждой программе на Паскале подключается модуль System, который добавляет к сегменту данных свои переменные/типизированные константы, а значит сегмент данных уже создается.

Цитата
Сегмент данных выделяется в объеме по требованию или сразу в размере 64Кбайт?
Сразу выделяется 64К. Меньше выделить нельзя, в Паскаль-программах нельзя и больше (Борланд С 3.1 работает с моделями памяти Compact/Large/Huge, что позволяет увеличить размер области данных/стека до 1Мб - в первых двух случаях - или даже больше - в случае Huge)
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 11
Пол: Мужской
Реальное имя: Игорь

Репутация: -  0  +


Вольво,

спасибо за помощь
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 28.04.2024 12:02
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name