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

Вниз

Как освободить память после SetLength   Найти похожие ветки 

 
яяяя   (2004-03-17 01:48) [0]

сабж.

SetLength(arr, StringGrid1.RowCount-2);
SetLength(arr_1, StringGrid1.RowCount-2);

{...}

arr   := nil;
arr_1 := nil;

Первый nil, прокатывает, на втором вываливаются дикие ошибки "Access violation ..."

Где грабли?


 
Алхимик ©   (2004-03-17 02:05) [1]

var
  arr, arr_1 : array of byte;
begin
SetLength(arr, 2);
SetLength(arr_1, 2);

ShowMessage(IntToStr(arr[1]));

arr   := nil;
arr_1 := nil;
end;


Работает. Ошибка в другом месте.


 
Defunct ©   (2004-03-17 02:39) [2]

А в приведенном примере яяяя   (17.03.04 01:48) память не освобождается. Перед тем как указателям Nil присваивать массивы нужно убить, тем же SetLength:

SetLength(arr, 0);
SetLength(arr_1, 0);


 
KSergey ©   (2004-03-17 05:58) [3]

> Defunct ©   (17.03.04 02:39) [2]

Обман трудового населения. Присвоить нил - есть освободить память.


 
Anatoly Podgoretsky ©   (2004-03-17 09:14) [4]

Defunct ©   (17.03.04 02:39) [2]
Установка нулевой длины устнавливает переменную в NIL
Установка в nil устнавливает длину в 0
Повторная установка в в nil или длину в 0, ничего не меняет.


 
tria ©   (2004-03-17 10:35) [5]

>яяяя
ИМХО:
Скорее всего, определения массивов у тебя идут один за другим. При работе с первым массивом ты где-то обращаешься за пределы размерности массива. При отключенном в настройках компиляции контроле происходит затирание адреса, хранящегося в arr_1 (на место ссылки пишутся твои данные). В дальнейшем при попытке обращения по неправильному адресу в arr_1 система вылетает. Ищи ошибку в коде до строчки arr_1=nill
Для начала посавь опцию Range checking.



Страницы: 1 вся ветка

Текущий архив: 2004.04.04;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.025 c
1-1079626166
Kor@l
2004-03-18 19:09
2004.04.04
mouse and RButton


1-1079063333
BorisMor
2004-03-12 06:48
2004.04.04
Многострочная ветка в TTreeView


4-1075121397
Islander
2004-01-26 15:49
2004.04.04
Непонятки с VirtualFree


1-1079085604
FC
2004-03-12 13:00
2004.04.04
скрыть иконку в systray


1-1079355085
Cosinus
2004-03-15 15:51
2004.04.04
Сохранение всех документов, отправленных на принтер