Отправляет email-рассылки с помощью сервиса Sendsay

Программирование, утечки памяти

Привет, сообщество!
Есть ли у кого идее по отлову утечек памяти в коде программ с++?
В принципе можно решить проблему переопределением операторов new и delete,
и введением в них функции логирования, но наверняка есть другой способ.
Типа как в VisualC++, при дебаге программ.

Ответить   Dark Coder Sun, 9 Oct 2005 23:13:27 +0400 (#452308)

 

Ответы:

On 10/9/05, Dark Coder <dcod***@x*****.ru> wrote:

Попробуйте dmalloc - мы им пользовались, утечки и многое другое можно
моймать. Это статическая библиотека, которая линкуется вперёд libc и
переопределяет malloc/free (а стандартные new/delete всё равно
работают через них).

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

--
Vladimir A.Efremov, PhD
Pangea Inc., Voice: (095) 912-10-23, 912-65-03
Fax: (095) 912-63-44 E-mail: vefrem***@g*****.com
ICQ: 259496450

-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 21968; Возраст листа: 808; Участников: 1430
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/452687

Ответить   Mon, 10 Oct 2005 18:23:17 +0400 (#452687)

 

On Mon, 10 Oct 2005 18:23:17 +0400
Vladimir Efremov <vefrem***@g*****.com> wrote:

Спасибо.
Кому интересно, есть програма valgrind, которая следит за
выделением/освобождением памяти работающей программы
Вот только не уверен в ее нормальной работе:

19:52:25 [~]$ valgrind ls
==22947== Memcheck, a memory error detector for x86-linux.
...
==22947== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 21 from 1)
==22947== malloc/free: in use at exit: 14136 bytes in 19 blocks.
==22947== malloc/free: 57 allocs, 38 frees, 22676 bytes allocated.
...

Это что ж, значит освобождено меньше, чем выделено?

Ответить   Dark Coder Mon, 10 Oct 2005 19:57:22 +0400 (#452745)

 

On 10/10/05, Dark Coder <dcod***@x*****.ru> wrote:

Да, она даже используется в KDevelop

Да легко - это же отдельный процесс, так что память за ним система
почистит. Но вообще, утечки памяти бывают в самых разных библиотеках.
Мы в своё время обнаружили их массу в XView (кто знает - усмехнётся).
Вот только исходных кодов тогда не было, да и копаться в них мы бы всё
равно не стали.

--
Vladimir A.Efremov, PhD
Pangea Inc., Voice: (095) 912-10-23, 912-65-03
Fax: (095) 912-63-44 E-mail: vefrem***@g*****.com
ICQ: 259496450

-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 21984; Возраст листа: 809; Участников: 1431
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/453084

Ответить   Tue, 11 Oct 2005 11:03:15 +0400 (#453084)

 

В Втр, 11/10/2005 в 11:03 +0400, Vladimir Efremov пишет:

Хм... А как же отличить такую ситуацию от настоящей утечки памяти?

Ответить   Dark Coder Tue, 11 Oct 2005 19:07:01 +0400 (#453329)