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

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

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.01.2014, 23:04   #1
Lokki23
Пользователь
 
Регистрация: 19.11.2013
Сообщений: 57
Вопрос Что делать с памятю????

Здраствуйте

Я пишу програму в с++ duilder XE2.
У меня такой вопрос после динамического создания елементов память нужно освободить.

Создаю
TLabel *lb[20] ;

TLabel *label;
TTabSheet *page;
TButton *btn;
TComboBox *CBox[400];

При выходе нужно освободить память.

delete page; и тд. да?
а масив как удалаять delete [] CBox; так?
или через for???

Это пишу в FormClose

где-то видел
в FormClose пишут - Action = caFree; ето фоурычит ????

Эсли да то уже не нужно удалать по указателям???

И можете поделится опитом о освобождении памяти в програмах : как это делать правильно?
Lokki23 вне форума Ответить с цитированием
Старый 17.01.2014, 10:26   #2
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,331
По умолчанию

deleta page - зависит от того, как выделяли память:
delete new TTabSheet;
delete [] new TTabSheet[10];
Чуствуете разницу? Массив и указатель - это не одно и то же.

CBox у вас это статический массив из указателей. Сам CBox удалять не надо а вот его элементы - через for, но это опять зависит от того, как они были выделены.
waleri вне форума Ответить с цитированием
Старый 17.01.2014, 14:50   #3
Lokki23
Пользователь
 
Регистрация: 19.11.2013
Сообщений: 57
По умолчанию

Создаю так
CBox[ComBox] = new TComboBox(Form1);
Эсли я правильно понял удалять нужно так

for(int i=0;i<ComBox;i++)
delete CBox[i];
Lokki23 вне форума Ответить с цитированием
Старый 17.01.2014, 15:11   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

в вашем случае компоненты уничтожаться вместе с формой к которой приписаны(параметр при создании компонента)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 18.01.2014, 17:40   #5
Lokki23
Пользователь
 
Регистрация: 19.11.2013
Сообщений: 57
По умолчанию

А єсли воспользоватся Action = caFree; то можно не освобождать память через delete ??????
Lokki23 вне форума Ответить с цитированием
Старый 18.01.2014, 17:49   #6
FataLL
Форумчанин
 
Аватар для FataLL
 
Регистрация: 29.01.2013
Сообщений: 319
По умолчанию

Lokki23, куда ты клонишь? Всю выделенную память надо освободить. Всё, что ты попросил и тебе дали, надо отдать. Как в туалете: "смой за собой". Можно, конечно, и не смывать, особенно, если возвращаться не планируешь...
FataLL вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
работа с виртуальной памятю aank10 Фриланс 0 18.05.2013 20:08
Что делать? Jobol Общие вопросы C/C++ 2 29.11.2012 22:02
Что мне делать или что надо знать перед тем как начать изучение яз.программирования С/С++? nokian8 Свободное общение 19 25.06.2012 23:09
Что делать? Alexxx92 Microsoft Office Access 2 12.06.2009 14:23
Что делать? mujbIk Общие вопросы C/C++ 6 27.08.2008 12:24