Как мне уменьшить количество занимаемой мной памяти в сегменте данных? (или как мне распределять память динамически?)
Скажем, ваша структура данных выглядит похожей на эту:
| 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); |
[000936]