Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.12.2011, 14:19   #1
tsar_
Форумчанин
 
Аватар для tsar_
 
Регистрация: 06.01.2011
Сообщений: 369
Восклицание Освобождение памяти под динамический массив

Здравствуйте.
В своей программе использую динамический массив строк.
Нужно ли при завершении работы программы явно указывать команду освобождения памяти, занятой массивом (присваиванием nil или установкой его длины, равной нулю), или же это происходит по умолчанию?
Программирую по необходимости
tsar_ вне форума Ответить с цитированием
Старый 23.12.2011, 14:35   #2
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

Освобождение происходит присвоением массиву значения nil.
Прик вне форума Ответить с цитированием
Старый 23.12.2011, 15:11   #3
tsar_
Форумчанин
 
Аватар для tsar_
 
Регистрация: 06.01.2011
Сообщений: 369
По умолчанию

Цитата:
Освобождение происходит присвоением массиву значения nil.
Так это происходит автоматически или мне нужно самому написать команду?
Программирую по необходимости
tsar_ вне форума Ответить с цитированием
Старый 23.12.2011, 15:13   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

SetLength(Mas,0) и Mas:=nil эквивалентны.
Выделенная память освобождается автоматически при выходе из области объявления динамического массива, не смотря на это предпочитаю явно её освобождать
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 23.12.2011, 15:33   #5
tsar_
Форумчанин
 
Аватар для tsar_
 
Регистрация: 06.01.2011
Сообщений: 369
По умолчанию

Цитата:
Выделенная память освобождается автоматически при выходе из области объявления динамического массива,
У меня он объявлен в обработчике Баттон1Клик, т.е. при выходе из него теоретически память освобождается, но практически лучше дать команду явно, я правильно понял?
Программирую по необходимости
tsar_ вне форума Ответить с цитированием
Старый 23.12.2011, 15:38   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
при выходе из него теоретически память освобождается
Не только теоретически, но и практически освобождается. Явное освобождение на ваше усмотрение
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 23.12.2011, 15:40   #7
tsar_
Форумчанин
 
Аватар для tsar_
 
Регистрация: 06.01.2011
Сообщений: 369
По умолчанию

Спасибо за ответы!
Программирую по необходимости
tsar_ вне форума Ответить с цитированием
Старый 24.12.2011, 00:37   #8
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Упомяну ещё Finalize(array_variable);

Это тоже равнозначно array_variable := nil и SetLength(array_variable, 0).
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как переделать под динамический двумерный массив? Kroleg C++ Builder 2 20.10.2011 13:36
Выделение памяти под массив указателей Анка291 Общие вопросы C/C++ 9 25.02.2011 00:03
выделение памяти под массив на C Kingdom_Reborn Помощь студентам 12 12.01.2011 04:40
выделение памяти под массив (си скрипт) eduard93 Общие вопросы C/C++ 0 19.12.2010 19:41
Проверка успешности выделения памяти под динамический масств(С) Александр Елис Помощь студентам 1 06.11.2009 10:00