Форум: "Основная";
Текущий архив: 2004.09.12;
Скачать: [xml.tar.bz2];
Вниз
Динамический массив. Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.024 c