Меню сайта
Мини-чат
Чтобы добавить сообщение, необходимо авторизоваться.
Главная » Статьи » Не стандартные примеры на Delphi » Pascal

Динамическое распределение памяти II
Как мне уменьшить количество занимаемой мной памяти в сегменте данных? (или как мне распределять память динамически?)

Скажем, ваша структура данных выглядит похожей на эту:


   
type
TMyStructure = record
Name: String[40];
Data: array[0..4095] of Integer;
end;

Она слишком большая для глобального распределения, так что вместо объявления глобальной переменной,


   
var
MyData: TMyStructure;

объявляете указательный тип,


   
type
PMyStructure = ^TMyStructure;

и переменную этого типа,


   
var
MyDataPtr: PMyStructure;

Такой указатель занимает всего лишь четыре байта сегмента данных.

Прежде, чем вы сможете использовать структуру данных, вы должны распределить ее в куче:


   
New(MyDataPtr);

и получить к ней доступ через глобальные данные любым удобным для вас способом. Единственное отличие от традиционного способа заключается в необходимости использования символа "^" для обозначения указателя на данные:


   
MyDataPtr^.Name := 'Советы по Delphi';
MyDataPtr^.Data[0] := 12345;

И, наконец, после использования памяти, освободите ее:


   
Dispose(MyDataPtr);
Категория: Pascal | Добавил: DelphiAiX (09.05.2012)
Просмотров: 549 | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]