Если можно изменить исходный код, Dmalloc является большим; это перечислит, какие указатели были не освобождены и (для кода, созданного с отладочной информацией) точно, на какой строке они были выделены.
Если Вы не можете, Valgrind быть в значительной степени стандартом для такой вещи. Я обычно нахожу, что Valgrind несколько тяжелее использует, но он имеет путь больше функций и не включает добавление dmalloc вызовы в Ваш код
Горный массив (от valgrind) является одним из лучшего способа найти утечки памяти. Повторите свой подозрительный код (или запускайте Вашу программу достаточно долго), и выведите результат с ms_print. Обычно, стек вызовов дает Вам достаточно информации для фиксации его.
С GDB можно попытаться присоединить к под управлением программе и вызвать функции такой как malloc_stats()
Если Ваша программа записана на другом языке, это могло бы быть более хитро. Недавно, некоторый GDB получил scriptability, и люди запустили интересные проекты, такие как gdb-"куча-", которая может проанализировать память Python от дампа ядра. Подобные аналитические сценарии памяти могли бы быть возможны для объектов C++.
Читайте также https://stackoverflow.com/questions/2564752/examining-c-c-heap-memory-statistics-in-gdb
Для Соляриса существует несколько инструментов, перечисленных в ответах на этот вопрос о StackOverflow (они включают утечку, сверяющуюся с другими формами плохого доступа к памяти).
Я делал Objective C в течение некоторого времени, и существует анализатор, которые имеют дело с управлением памятью уровня C и материалом как этот. Лязгайте Статический Анализатор так хорош, что Apple решила связать его их IDE XCode. Я не уверен, хорошо ли это для Вашего вопроса, но если Вы делаете C затем, это стоит попытки.