Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.01.30;
Скачать: CL | DM;

Вниз

Динам массивы   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.028 c
14-1105614843
Ilya___
2005-01-13 14:14
2005.01.30
Подскажите, где можно взять библиотеку FastDib для Делфи 7.


1-1105960865
Progh
2005-01-17 14:21
2005.01.30
Отграничение прав в TWebBrowser-e


1-1105894004
slart
2005-01-16 19:46
2005.01.30
Подскажите компонент


9-1098489583
Malij
2004-10-23 03:59
2005.01.30
OpenGl


3-1104320514
Makc
2004-12-29 14:41
2005.01.30
Как не прописывать алиас каждый раз,при запуске проги...