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

Вниз

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

 
kj   (2004-08-26 17:16) [0]

Как отчистить память от динамического массива?


 
Семен Сорокин ©   (2004-08-26 17:18) [1]

SetLength(massiv, 0);
massiv := nil;
?


 
kj   (2004-08-26 17:22) [2]

На это появляется ошибка "Invalid pointer operation".


 
antonn ©   (2004-08-26 17:23) [3]

Запихай в try...except


 
Amoeba ©   (2004-08-26 17:23) [4]


> На это появляется ошибка "Invalid pointer operation".

Значит ошибка в 17-й строке. Код в студию!


 
jack128 ©   (2004-08-26 17:24) [5]

antonn ©   (26.08.04 17:23) [3]
спаси боже от таких програмистов..


 
MegaVolt   (2004-08-26 17:24) [6]

RTFM :)
procedure Dispose(var P: Pointer); Releases memory allocated for a dynamic variable.


 
Amoeba ©   (2004-08-26 17:26) [7]


> antonn ©   (26.08.04 17:23) [3]
> Запихай в try...except

В данном случае так делать "не есть хорошо". Такие исключения надо не отлавливать, а просто их не допускать. Пусть товарищь приведет свой код.


 
Суслик ©   (2004-08-26 17:26) [8]

Эх молодо-зелено.
(я о 3)

Автору.
Динамический массив в записи, а запись ты копируешь командой move...
или что-то такое...
В общем препятствуешь дельфи осуществлять корректный подсчет ссылок.


 
Amoeba ©   (2004-08-26 17:27) [9]


> MegaVolt   (26.08.04 17:24) [6]
> RTFM :)
> procedure Dispose(var P: Pointer); Releases memory allocated
> for a dynamic variable.

Не путай динамический массив с динамической переменной. Не надо пачкать молодежи мозги, если сам не знаешь.
LMD


 
kj   (2004-08-26 17:29) [10]

Код:

M: array of array of Integer;
 SetLength(M, 1, 2);
 M[0, 0]:= 0;
 M[0, 1]:= 0;
 M[0, 2]:= 1;
 M:= nil; -сдесь появляется ошибка


 
MegaVolt   (2004-08-26 17:29) [11]

Упс.... Стормозил. Видать сегодня не мой день :)


 
Amoeba ©   (2004-08-26 17:31) [12]

Все уже сказал Семен сорокин в посте [1]

или
SetLength(massiv, 0);
или
massiv := nil;

Оба варианта эквивалентны.

P.S. Если динамический массив является локальной переменной процедуры/функции, то специально ничего освобождать не нужно - память будет автоматически освобождена при выходе из процедуры.


 
Семен Сорокин ©   (2004-08-26 17:32) [13]

SetLength(M, 1, 2); вместо 2 надо 3
M[0, 0]:= 0;
M[0, 1]:= 0;
M[0, 2]:= 1;


 
kj   (2004-08-26 17:32) [14]

Массив глобальный.


 
kj   (2004-08-26 17:33) [15]

Ошибся. Спасибо всем.


 
Семен Сорокин ©   (2004-08-26 17:34) [16]

галочку range check error в Options проекта поставь


 
Amoeba ©   (2004-08-26 17:35) [17]


> kj   (26.08.04 17:29) [10]
> Код:
>
> M: array of array of Integer;
>  SetLength(M, 1, 2);
>  M[0, 0]:= 0;
>  M[0, 1]:= 0;
>  M[0, 2]:= 1;
>  M:= nil; -сдесь появляется ошибка

Правильно, будет ошибка! Как нужно делать есть в любом руководстве по Delphi или в Help на топик Multidimensional dynamic arrays.


 
Anatoly Podgoretsky ©   (2004-08-26 17:41) [18]

kj   (26.08.04 17:29) [10]
Пальчиками посчитай сколько эдементов выделено и скольким ты пытаешься присвоить значения.


 
Суслик ©   (2004-08-26 17:45) [19]

как всегда молодеж не любит range check error
и почему он по умолчанию не стоит в опциях проекта?



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

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

Наверх




Память: 0.5 MB
Время: 0.021 c
10-1015848534
m.r. sender
2002-03-11 15:08
2004.09.12
CORBA через модем


10-1036487305
Demon[DZ]
2002-11-05 12:08
2004.09.12
RemoteDataModule!


6-1089053117
leonidus
2004-07-05 22:45
2004.09.12
TidHTTP при работе в потоке


14-1093193860
Torry Real 1444
2004-08-22 20:57
2004.09.12
DI is closed


14-1093287449
GEN++
2004-08-23 22:57
2004.09.12
Математические выражения в тексте.