Динамическое распределение памяти 2
|
- Что делает программист после запоя наутро?
- Тестирует память.
|
Как мне уменьшить количество занимаемой мной памяти в сегменте данных? (или как мне распределять память динамически?)
Скажем, ваша структура данных выглядит похожей на эту:
type
TMyStructure = record
Name: String[40];
Data: array[0..4095] of Integer;
end;
|
Она слишком большая для глобального распределения, так что вместо объявления
глобальной переменной,
var
MyData: TMyStructure;
|
объявляете указательный тип,
type
PMyStructure = ^TMyStructure;
|
и переменную этого типа,
var
MyDataPtr: PMyStructure;
|
Такой указатель занимает всего лишь четыре байта сегмента данных.
Прежде, чем вы сможете использовать структуру данных, вы должны распределить
ее в куче:
и получить к ней доступ через глобальные данные любым удобным для вас
способом. Единственное отличие от традиционного способа заключается в
необходимости использования символа "^" для обозначения указателя на данные:
MyDataPtr^.Name := 'Советы по Delphi';
MyDataPtr^.Data[0] := 12345;
|
И, наконец, после использования памяти, освободите ее:
|