2013-11-07 5 views
1

У меня есть демон (программа на C), работающий на моей системе. Когда демона запущена, к этому демону присоединяется множество других библиотек.Ошибка утечки памяти

Существует еще один пользовательский процесс, который при запуске использует этот демон для его работы.

Проблема заключается в том, что пользовательский процесс завершает свою работу, когда я вижу вывод команды top для этого демона. Я вижу, что память «RES» увеличивается в МБ. % mem уменьшается до своего предыдущего уровня, который был до того, как я запустил процесс.

PID USER  PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND   
7456 root  20 0 73946 34m 3543 S  0 0.3 14:28.96 test_daemon    

Увеличивает ли это увеличение значения RES в памяти утечки памяти?

+1

Увеличение ВИЭ не обязательно означает утечку памяти, загрузка динамической библиотеки может вызвать ее. –

+5

Вы можете проверить это чем-то вроде 'valgrind' – starrify

+0

спасибо всем за ответ. Но это увеличение значения RES не является фиксированным. Иногда он выходит за пределы 100 МБ. Я думаю, что если это связано с загрузкой разделяемых библиотек, то не следует увеличивать объем памяти до некоторого значения или фиксировать. В любом случае, если в каких-либо библиотеках имеется некоторое распределение памяти, это увеличит потребление памяти этим демоном. Правильно ли я? – RKum

ответ

1

Не обязательно, и, вероятно, нет. Единственный способ убедиться, что ваш код - утечка памяти, - это запустить его с помощью чего-то вроде Valgrind (http://valgrind.org/). Зачем использовать верхний, когда вы можете использовать фактический отладчик памяти и быть уверенным?

Смежные вопросы