Надо ли освобождать память

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

Надо ли освобождать память

Сообщение Akmal » 16.06.2006 08:46:44

Всем привет.

В своей программе на FP я использую динамический массив

var
arr_cl: array of array[0..5] of string;
n1: integer;

далее в програме делаю так

n1:=100;
SetLength(arr_cl, n1);

Так вот надоли перед окончанием освобождать память в системе и если надо, то как это делается?
:?:
Akmal
новенький
 
Сообщения: 10
Зарегистрирован: 19.03.2006 10:02:56

Сообщение Иван Шихалев » 16.06.2006 08:52:43

Вообще, локально выделенная память освобождается ОС (если речь идет о Win32, Linux и т.д.), НО в других системах, особенно в экзотических, этого может и не быть. Кроме того, менеджер кучи может использовать и глобально выделенную память (в FPC это не так, но как знать — вдруг захочется менеджер кучи поменять). В общем, лучше таки освобождать. В случае динамических массивов — SetLength(arr,0).
Аватара пользователя
Иван Шихалев
энтузиаст
 
Сообщения: 1138
Зарегистрирован: 15.05.2006 11:26:13
Откуда: Екатеринбург

Сообщение GrayEddy » 16.06.2006 09:43:03

Finalize(arr)
GrayEddy
постоялец
 
Сообщения: 375
Зарегистрирован: 06.05.2005 09:37:56

Сообщение Юра » 16.06.2006 11:39:05

Вообще-то компилятор сам вставляет код освобождения динамических массивов и строк при выходе из области их видимости. Так что с этим все в порядке.

Освобождать нужно память, выделенную с помощью GetMem или New.
Юра
постоялец
 
Сообщения: 163
Зарегистрирован: 25.05.2005 10:20:09
Откуда: Украина, Киев

Сообщение GrayEddy » 16.06.2006 22:54:21

Вот именно, что "вообще-то". Никогда не доверяй компилятору освобождение памяти, если он не оснащен сборщиком "мусора".
А вообще-то, явное освобождение памяти - это признак хорошего воспитания и принадлежность к аристократии :)
GrayEddy
постоялец
 
Сообщения: 375
Зарегистрирован: 06.05.2005 09:37:56

Сообщение Юра » 17.06.2006 14:31:10

Еще раз повторяю. Delphi и FPC всегда освобождают память динамических массивов и строк (про экзотические случаи я не говорю). Поэтому если освобождать их явно, устанавливая нулевую длину, то это будет не хоршим тоном, а простой тратой времени и увеличением кода.
Юра
постоялец
 
Сообщения: 163
Зарегистрирован: 25.05.2005 10:20:09
Откуда: Украина, Киев


Вернуться в Free Pascal Compiler

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 81

Рейтинг@Mail.ru