Форум: "Игры";
Текущий архив: 2005.01.30;
Скачать: [xml.tar.bz2];
ВнизДинам массивы Найти похожие ветки
← →
Falcon(TFSoft) © (2004-10-20 19:38) [0]Здравствуйте ув. мастера!
Помогите решить вопрос, с памятью. Возникла ситуация, при которой со спрайтом необходимо хранить динамический массив, настройки спрайта, динамический т.к. я посчитал не выгодным храниьт разное кол. данных при фиксированной длинне, но не в этом суть. Так вот по его создании я вызываю функцию, которая инициализирует их, а именно:
Procedure TImageSpriteEX_2.Init (Name: String; var ImgList: TDXImageList);
var
i : byte;
t : TAS_EX;
begin
i := 0;
t := MainFile.FindTAS_EX(name);
выделям память...
SetLength (Massiv, t.count);
while i<=t.count do
begin
записываем данные в структуру (только integer & boolen)
Massiv[i] := t.data[i];
inc(i);
end;
end;
Всё грузится нормально и все данный передаються, но вот как только я завершаю приложение (просто закрываю его, без выполнения каких либо функций в Form.OnClose) вызывается оштбка InvalidPointer pointer operation ну и адресс и т.д.
Так вот методом научного тыка я определил, что если массив статичен, то такого не происходит.
Так в чём же проблема?
Ведь массив не объект и память из поднего высвобождается вроде автоматически?
Помогите пожайлуста...
← →
miek (2004-10-20 22:05) [1]while i<t.count
Иначе выходишь за границы массива.
Индексы должны лежать в границах [ 0, t.count-1]
← →
Falcon(TFsoft) © (2004-10-20 22:11) [2]Наверное самая распрастранённая ошибка, спасибо!
← →
ASoft (2004-10-21 02:50) [3]По идее, о выходе за границы массива компилятор должен сообщить сразу во время выполнения проверки массива. InvalidPointer pointer operation хитрая ошибка, которую трудно, порой, отследить, в отличии от нарушения ранга массива.
← →
NikeOLD © (2004-10-21 11:48) [4]
> ASoft (21.10.04 02:50) [3]
Как он тебе сообщит в случае динамического массива?
> Falcon(TFsoft) ©
Неплохо бы и SetLength(<массив>, 0) делать.
← →
П7 (2004-10-21 14:37) [5]
> Falcon(TFSoft) © (20.10.04 19:38)
Вот после программ с таким кодом остаётся только загаженная память!!! Кто тебя учил, что динамически выделенная память очищается автоматически? Сказки всё это!!! Не верь.
> NikeOLD © (21.10.04 11:48) [4]
Поддерживаю.
← →
Владислав © (2004-10-22 16:10) [6]> П7 (21.10.04 14:37) [5]
Чушь.
← →
П7 (2004-10-22 16:26) [7]
> Владислав © (22.10.04 16:10) [6]
Очень информативная запись... Поподробнее, пожалуйста.
Страницы: 1 вся ветка
Форум: "Игры";
Текущий архив: 2005.01.30;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.046 c