Главная страница
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.48 MB
Время: 0.026 c
7-1076689383
DelphiN!
2004-02-13 19:23
2004.04.04
Отсылка сообщения безоконной программе


14-1077786871
Voland2000
2004-02-26 12:14
2004.04.04
Что круче?


4-1075282699
bar
2004-01-28 12:38
2004.04.04
Как отловить сообщение посылаемое чужому окну?


6-1075405055
Djon007
2004-01-29 22:37
2004.04.04
Отправка песьма через Socket


14-1078675942
Натуся
2004-03-07 19:12
2004.04.04
Проблемы с Linux