В C ++, как я могу сказать, КАКОЙ фрагмент кода выделяет ТИП объектов?

0

Примечание: я на OSX/Yosemite, поэтому Valgrind в настоящее время недоступен. DTrace есть, но отсутствует libc: malloc hook.

Заявление о проблеме:

У меня есть программа C++, в которой используется слишком много памяти, и мне нужно знать, кто/что за преступники. Обратите внимание, что у него нет утечек памяти, он просто использует слишком много памяти. Что касается использования памяти, мне нужно знать:

ВОЗ: Было бы неплохо узнать, кто выделяет память (исходный файл, номер строки).

ЧТО: Было бы хорошо знать, что выделяется (имя класса).

Я могу написать свой собственный malloc/calloc/realloc и (вроде) выяснить это самостоятельно, но я хотел посмотреть, есть ли какие-либо инструменты для этого в первую очередь.

  • 0
    Скомпилируйте его для Linux-машины и используйте там инструменты Linux.
  • 0
    Спасибо, любезно - Не могли бы вы быть более конкретным?
Теги:
memory-leaks
memory
memory-management

2 ответа

-1
Лучший ответ

Вы могли бы дать dmalloc попробовать (http://dmalloc.com)

Создайте источник, ссылку на свою программу, затем играйте с функциями утилиты в http://dmalloc.com/docs/latest/online/dmalloc_13.html

(отказ от ответственности: я не использую OSX, поэтому вышеуказанное может не работать)

  • 0
    Спасибо - но это, кажется, говорит вам больше о статистике на уровне байтов (например, было выделено 12345 байтов) и, кажется, ничего не говорит вам об уровне C ++ (например, Base :: Derived выделил 1235 байтов класса Data) , Так что, не совсем то, что я искал (но спасибо).
  • 0
    У dmalloc есть отслеживание местоположения, поэтому, по крайней мере, вы должны видеть, какая строка кода выделена, какой кусок памяти.
0

Оказывается, было намного проще просто использовать виртуальную машину Linux с массивом Valgrind :) Hooray для виртуальных машин!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню