Форум программистов, компьютерный форум CyberForum.ru

утечки памяти - просто жесть - C++

Восстановить пароль Регистрация
 
soican
49 / 23 / 1
Регистрация: 16.11.2011
Сообщений: 329
Записей в блоге: 5
21.08.2013, 21:05     утечки памяти - просто жесть #1
C++
1
2
3
4
5
6
7
analysis *SP[2]; // объявляем классы
SP[0] = new analysis(Edit1->Text); //загружаем данные
SP[1] = new analysis(Edit2->Text); //загружаем данные
SP[0]->perform_analysis(SP[1]); // проводим анализ
 //удаляем 
 //delete SP[0];
 //delete SP[1];
так вот, что коменчу, что не коменчу delete , память в диспетчере, утекает!! рисует мне какието 60 метров каждый раз! т.е. при нажатии кнопки "вычислить"(кнопка которая запускает анализ) я получаю в диспетчер по 60 метров - Это пилец, хана просто!!! всё работает прекрасно и было обрадовался пока не посмотрел на диспетчер задач
что делать?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Убежденный
Системный программист
 Аватар для Убежденный
14191 / 6206 / 985
Регистрация: 02.05.2013
Сообщений: 10,339
Завершенные тесты: 1
21.08.2013, 21:15     утечки памяти - просто жесть #2
1) Возможно, утечка (если она есть вообще) в теле perform_analyzis.

2) Диспетчер задач - не та программа, которой следует руководствоваться при анализе утечек.
Используйте специально предназначенные для этого средства - Intel Inspector, valgrind, debug crt и т.д.

3) Пока Вы будете руками звать new/delete, open/close, add_ref/release, утечки будут все равно.
soican
49 / 23 / 1
Регистрация: 16.11.2011
Сообщений: 329
Записей в блоге: 5
21.08.2013, 21:21  [ТС]     утечки памяти - просто жесть #3
Цитата Сообщение от Убежденный Посмотреть сообщение
Диспетчер задач - не та программа
ну как не та! она мне показывает, что есть касяк - и не только мне, любому пользователю кто ей будет пользоваться. моя программа в buildere так что попробую разобраться AQtime(или попробую щяс dr Memory я с ним работал - он вроде отлавливал утечки)я просто очень не понимаю почему delete вообще не хочет работать
Цитата Сообщение от Убежденный Посмотреть сообщение
Пока Вы будете руками звать new/delete, open/close, add_ref/release, утечки будут все равно
так так так, а вот это интересно, что использовать вместо них? умные указатели?
Убежденный
Системный программист
 Аватар для Убежденный
14191 / 6206 / 985
Регистрация: 02.05.2013
Сообщений: 10,339
Завершенные тесты: 1
21.08.2013, 21:28     утечки памяти - просто жесть #4
Цитата Сообщение от soican Посмотреть сообщение
ну как не та!
Для анализа утечек в диспетчере задач отсутствует главное - возможность
отделить операции с памятью, которые выполняются вашим кодом, от тех, которые
выполняются другими компонентами, загруженными в процесс. Вызовите, например,
GetOpenFileName, и увидите целую пачку новых мегабайт и хэндлов, которые вы
"не заказывали", даже после выхода из функции.

Цитата Сообщение от soican Посмотреть сообщение
так так так, а вот это интересно, что использовать вместо них? умные указатели?
Умные указатели, BOOST_SCOPE_EXIT и прочие RAII-обертки.
soican
49 / 23 / 1
Регистрация: 16.11.2011
Сообщений: 329
Записей в блоге: 5
21.08.2013, 21:36  [ТС]     утечки памяти - просто жесть #5
Цитата Сообщение от Убежденный Посмотреть сообщение
Вызовите, например,
GetOpenFileName
я впринципе открываю записываю какието файлы во время perform_analysis
...блин, главный косяк последовательное нажимание кнопки "вычислить" фигачят мне 60 метров, и я просто негодую оттого что delete не работает, отстойный delete вообще никакущий! изза него придётся разбираться с указателями всякими умными!!! хочется засунуть страуструпа в мешок и повесить в боксерском зале!
gray_fox
21.08.2013, 21:53
  #6

Не по теме:

Цитата Сообщение от soican Посмотреть сообщение
отстойный delete вообще никакущий! изза него придётся разбираться с указателями всякими умными!!! хочется засунуть страуструпа в мешок и повесить в боксерском зале!
) так зачем тебе С++? )

Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4236 / 2769 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
21.08.2013, 21:53     утечки памяти - просто жесть #7
Цитата Сообщение от soican Посмотреть сообщение
нажимание кнопки "вычислить" фигачят мне 60 метров,
Выше же вроде объяснили, что не стоит полагаться на то, что пишет диспетчер задач.
Jupiter
21.08.2013, 21:55
  #8

Не по теме:

Цитата Сообщение от soican Посмотреть сообщение
хочется засунуть страуструпа в мешок и повесить в боксерском зале!
а вас куда засунуть? устроили тут шок, жесть, "Скандалы, интриги, расследования"

Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4236 / 2769 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
21.08.2013, 21:56     утечки памяти - просто жесть #9
Цитата Сообщение от soican Посмотреть сообщение
delete не работает
delete, кстати, внутри себя использует средства ОС, так что ругай Windows, и Б.Г. заодно
Убежденный
Системный программист
 Аватар для Убежденный
14191 / 6206 / 985
Регистрация: 02.05.2013
Сообщений: 10,339
Завершенные тесты: 1
21.08.2013, 22:19     утечки памяти - просто жесть #10
Цитата Сообщение от soican Посмотреть сообщение
я впринципе открываю записываю какието файлы во время perform_analysis
...блин, главный косяк последовательное нажимание кнопки "вычислить" фигачят мне 60 метров, и я просто негодую оттого что delete не работает, отстойный delete вообще никакущий!
А с чего Вы решили, что именно этот delete виноват ?
Может, утечка в perform_analysis, может деструктор analysis не очищает ресурсы,
может неверно написан какой-нибудь конструктор копирования и т.д.
soican
49 / 23 / 1
Регистрация: 16.11.2011
Сообщений: 329
Записей в блоге: 5
21.08.2013, 22:53  [ТС]     утечки памяти - просто жесть #11
Цитата Сообщение от Убежденный Посмотреть сообщение
Может, утечка в perform_analysis, может деструктор analysis не очищает ресурсы
скорее всего ты прав, я пробовал пошагово пройти, так вот F7 после
C++
1
delete SP[0];
кидануло меня в деструктор класса analysis - но вот почему то в деструктор creating(предок analysis ) не кидануло - не знаешь почему?
Убежденный
Системный программист
 Аватар для Убежденный
14191 / 6206 / 985
Регистрация: 02.05.2013
Сообщений: 10,339
Завершенные тесты: 1
21.08.2013, 23:01     утечки памяти - просто жесть #12
Цитата Сообщение от soican Посмотреть сообщение
кидануло меня в деструктор класса analysis - но вот почему то в деструктор creating(предок analysis ) не кидануло - не знаешь почему?
Знаю. Там в деструкторе creating стоит "delete m_pData", а должно быть "delete [] m_pData".
Шутка Не видя кода, ничего нельзя сказать наверняка.
soican
49 / 23 / 1
Регистрация: 16.11.2011
Сообщений: 329
Записей в блоге: 5
21.08.2013, 23:37  [ТС]     утечки памяти - просто жесть #13
да нет конечно...всё кидануло в деструктор предка

Добавлено через 1 минуту
Цитата Сообщение от Убежденный Посмотреть сообщение
"delete m_pData", а должно быть "delete [] m_pData".
точняк я же совсем не думал о том где ставть [] а где нет!

Добавлено через 8 минут
Цитата Сообщение от Убежденный Посмотреть сообщение
Не видя кода, ничего нельзя сказать наверняка
это полюбому, там тыщи строк! мой верный друг - пошаговый debuging мне в помощь, я найду где страуструп у меня ворует память!

Добавлено через 23 минуты
нашёл)) это всё оказывается soican навыделял памяти в цикле:
C++
1
2
3
4
5
6
7
8
9
10
for (int j = 0; j < N_parts[1]; j++)
{...
 // создадим массивы для оставшихся разбиений
  for (int g = 1; g < 4; g++)
   {mesh[g] = new point *[n_razb[0]+1];
     for (int g1= 0; g1< n_razb[0]+1; g1++)
    mesh[g][g1]=new point[n_razb[1]+1];
   }
...
}
а удалил после цикла
C++
1
2
3
4
5
6
7
//  удаляем созданные массивы
for (int i= 1; i< 4; i++)
 {for (int j= 0; j< n_razb[0]+1; j++)
    delete[] mesh[i][j];
   delete[] mesh[i];
 }
delete[] mesh;
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.08.2013, 23:58     утечки памяти - просто жесть
Еще ссылки по теме:

Я создаю утечки памяти ! C++
Не будет ли утечки памяти? C++
Определение утечки памяти C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Avazart
 Аватар для Avazart
6900 / 5140 / 252
Регистрация: 10.12.2010
Сообщений: 22,584
Записей в блоге: 17
21.08.2013, 23:58     утечки памяти - просто жесть #14
Цитата Сообщение от soican Посмотреть сообщение
я впринципе открываю записываю какието файлы во время perform_analysis
отстойный delete вообще никакущий! изза него придётся разбираться с указателями всякими умными!!! хочется засунуть страуструпа в мешок и повесить в боксерском зале!
Прикольно, все равно что ругается на веник (он ведь тоже не метёт, если руки-крюки)
Yandex
Объявления
21.08.2013, 23:58     утечки памяти - просто жесть
Ответ Создать тему
Опции темы

Текущее время: 07:35. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru