FreeBasic
Главная
Вход
Регистрация
Суббота, 23.09.2017, 10:22Приветствую Вас Гость | RSS
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Форум » Freebasic » Вопросы по языку FreeBasic » Удаление связанных списков
Удаление связанных списков
Billi_JoДата: Вторник, 17.01.2017, 22:44 | Сообщение # 1
Сержант
Группа: Пользователи
Сообщений: 37
Репутация: 0
Статус: Offline
Здравствуйте.

Есть связанный список объектов.
Правильно ли я понимаю:
1. Если перед закрытием программы связанный список не удалить, то он так и будет занимать память в ОЗУ?
2. Если удалить только связанный список, то объекты из этого списка так и останутся в ОЗУ, а для полной очистки памяти нужно в процедуре destructor описать удаление каждого объекта (в цикле)?
 
haavДата: Среда, 18.01.2017, 06:35 | Сообщение # 2
Генерал-лейтенант
Группа: Администраторы
Сообщений: 768
Репутация: 33
Статус: Offline
Цитата Billi_Jo ()
Правильно ли я понимаю:


Нет, неправильно. Память используется программой только пока она является процессом системы. Как только процесс закрывается, операционная система сама подчищает за ним.


Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
 
Billi_JoДата: Среда, 18.01.2017, 11:31 | Сообщение # 3
Сержант
Группа: Пользователи
Сообщений: 37
Репутация: 0
Статус: Offline
Отлично!

Но если мне все таки нужно удалить список внутри программы должен ли я просто написать:
Код
delete    pList    ' pList - указатель на связанный список
или же
Цитата Billi_Jo ()
для полной очистки памяти нужно в процедуре destructor описать удаление каждого объекта (в цикле)?

Вдогонку еще вопрос:
Если я создаю список объявлением:

Код
dim as LstType    List
То удалить его через

Код
delete    @List
не получается.
Я что-то делаю не так или оно так и задумано, и, для удаления нужно было создавать список через
Код
dim as LstType ptr    pList
pList = new    LstType
?
 
haavДата: Среда, 18.01.2017, 15:36 | Сообщение # 4
Генерал-лейтенант
Группа: Администраторы
Сообщений: 768
Репутация: 33
Статус: Offline
Цитата
или же для полной очистки памяти нужно в процедуре destructor описать удаление каждого объекта (в цикле)?


Да так. Или в процедуре создать код удаления каждого объекта и вызвать ее.

Цитата
Если я создаю список объявлением:
dim as LstType List
То удалить его через
delete @List
не получается.


Да, так не получится. При таком объявлении, переменная List живет:
1) до конца работы программы , если она объявлена вне процедур, циклов и др. конструкций со своей областью видимости
2) пока выполняется код конструкции , в которой она объявлена (например код процедуры, цикла, конструктора, деструктора и пр. )
Ее очисткой занимается встроенный механизм, создаваемый компилятором.


Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
 
Billi_JoДата: Среда, 18.01.2017, 16:57 | Сообщение # 5
Сержант
Группа: Пользователи
Сообщений: 37
Репутация: 0
Статус: Offline
Спасибо за разъяснения, haav!
 
Форум » Freebasic » Вопросы по языку FreeBasic » Удаление связанных списков
Страница 1 из 11
Поиск: