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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> утечка памяти ? 
:(
    Опции темы
Remiznik
Дата 7.4.2009, 23:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 379
Регистрация: 30.4.2005

Репутация: нет
Всего: 1



тут в одной теме Любитель написал 
Цитата

1. Зачем выделять память под res динамически? Вылетать из-за этого не будет, просто вопиющие мемори-лики тоже не есть хорошо..


то есть 
Код

int main(int argc, char *argv[])
{
           QApplication app(argc, argv);
           Treug *res = new Treug; //утечка 
           res->show();
           return app.exec();
}


так хотелось бы узнать в чём утечка ? ну создаём мы его динамически но один раз же ? 

извените что если совсем ламерский вопр ... но очень интересно узнать !
PM MAIL   Вверх
SABROG
Дата 8.4.2009, 08:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 4
Всего: 91



Скорее всего он имел ввиду другие ситуации и правила хорошего тона программирования. Конкретно для этого примера это не существенно. На худой конец для таких окон есть аттрибут Qt::WA_DeleteOnClose, но вот с QObject'ами у которых нет родителя так не получится. Разве что контролировать создание и уничтожение объектов через QObjectCleanupHandler.


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
Любитель
Дата 8.4.2009, 20:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 24
Всего: 92



Цитата(Remiznik @  7.4.2009,  23:11 Найти цитируемый пост)
так хотелось бы узнать в чём утечка ? ну создаём мы его динамически но один раз же ? 

Ты к тому, что память будет освобождена при завершении работы приложения? Да, будет. Но:
1. Зачем привыкать к плохому smile 
2. Есть ещё деструктор, который в данном случае не выполнится. А деструктор может освобождать и персистентные (относительно процесса приложения) ресурсы.

Да - если строго подходить к вопросу, то конкретно в твоём случае ничего бы не случилось. Но в любом случае это отвратительная практика.

PS Remiznik, тебя интересовал вопрос именно в свете Qt-шных особенностей? А то перенесу в "Общие вопросы".. smile


--------------------
PM MAIL ICQ Skype   Вверх
MAKCim
Дата 8.4.2009, 20:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 52
Всего: 207



Цитата(Любитель @  8.4.2009,  20:27 Найти цитируемый пост)
1. Зачем привыкать к плохому

здесь можно поспорить  smile 


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
Любитель
Дата 8.4.2009, 20:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 24
Всего: 92



MAKCim, давай smile

На всякий случай, что я имел ввиду под "плохим" - допустим, это выделение памяти и пр. (короче грубо говоря половину текущего мейна) мы переносим в другую функцию. Которую вызываем периодически в нашем приложении. Обычно развитие проекта, когда старая функциональность стала лишь частью новой. Только прямой рефакторинг окажется неудачным, именно потому что приведёт к мемори-ликам в чистом виде smile




--------------------
PM MAIL ICQ Skype   Вверх
Remiznik
Дата 8.4.2009, 21:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 379
Регистрация: 30.4.2005

Репутация: нет
Всего: 1



Любитель, да это я спросил так чтоб узнать почему ты в той теме так написал а флудить там не хотелось !

Ну а вобше процесс утечки памяти в приложениях с использованием имеет Qt особую специфику или такуюже как в простом С++ ? Просто я пока не работал с большим приложением чтоб сталкнутся с утечкой и опыт ешо маловат чтоб за этим следить .... но разобираться в это как я понимаю необходимо !
PM MAIL   Вверх
MAKCim
Дата 8.4.2009, 21:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 52
Всего: 207



Цитата(Любитель @  8.4.2009,  20:39 Найти цитируемый пост)
Только прямой рефакторинг окажется неудачным, именно потому что приведёт к мемори-ликам в чистом виде

кто мешает добавить освобождение ресурсов после вызова функции?
а если ресурсы локальны по отношению к функции, то это ошибка, т. к все локальные ресурсы должны быть освобождены при выходе из функции (в большинстве не специфичных случаев)


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
Любитель
Дата 8.4.2009, 21:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 24
Всего: 92



Цитата(Remiznik @  8.4.2009,  21:20 Найти цитируемый пост)

Ну а вобше процесс утечки памяти в приложениях с использованием имеет Qt особую специфику или такуюже как в простом С++ ?

Вообщем-то нет. Есть концепция парент-чайлдов, но эта концепция не в Qt придумана и особого отношения к Qt не имеет.

Цитата(MAKCim @  8.4.2009,  21:25 Найти цитируемый пост)
кто мешает добавить освобождение ресурсов после вызова функции?

А зачем вообще делать себе проблемы, если можно (да-да, конечно, если) обойтись без динамического выделения памяти?

Цитата(MAKCim @  8.4.2009,  21:25 Найти цитируемый пост)
а если ресурсы локальны по отношению к функции, то это ошибка, т. к все локальные ресурсы должны быть освобождены при выходе из функции

Смотрим код в первом посте smile

Цитата(MAKCim @  8.4.2009,  21:25 Найти цитируемый пост)
в большинстве не специфичных случаев

Собственно про это я и хотел в первую очередь услышать от тебя. Только поподробней.. smile 


--------------------
PM MAIL ICQ Skype   Вверх
J0ker
Дата 8.4.2009, 22:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 986
Регистрация: 17.9.2008

Репутация: 4
Всего: 14



Цитата(MAKCim @ 8.4.2009,  21:25)
кто мешает добавить освобождение ресурсов после вызова функции?

разные кучи в случае функции в dll


--------------------
user posted image
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0810 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.