LINUX.ORG.RU

узнать обьем памяти занимаемой классом

 ,


0

6

subj, собственно можно ли и как узнать сколько озу жрет мой класс со всеми аллокациями в нем, и включая то что он породил? Исключая сам код библиотек Qt?

Или нужно ставить какой-то профилировщик? какой?

★★★★★

Ответ на: комментарий от invy

С точки зрения профилирования это может быть полезно и местами даже необходимо.

Для своих классов я писал метод который тупо руками все считал. Но это можно сделать если структура данных не сильно заморочная, иначе легко ошибиться.

AntonI ★★★★
()
Ответ на: комментарий от anonymous2

добавить виртуальный, который считает все свои внутренние аллокации и данные.

Добавить виртуальный что?

Xintrea ★★★★★
()
Ответ на: комментарий от anonymous2

Хоть что угодно добавить можно, можно даже попытаться сделать его виртуальным - непонятно только как это поможет ТСу.

Особенно непонятно почему это хоть что угодно должно быть именно виртуальным.

AntonI ★★★★
()
Ответ на: комментарий от fsb4000

А чем это будет лучше банального sizeof от экземпляра класса если это делать в классе? И как разгрести то что повалится в логи если это делать глобально? И как это поможет учесть всякие маллоки/ммапы?

AntonI ★★★★
()
Ответ на: комментарий от AntonI

sizeof показывает занятую память на стеке.

в глобальном операторе new можно считать динамические аллокации.

никак это не поможет учесть всякие маллоки/ммапы.

Это подход для маленькой программы где мы просто создаём экземпляр нужного класса, выводим в консоль что мы насчитали и выходим.

fsb4000 ★★★★★
()
Ответ на: комментарий от fsb4000

КМК руками или валгриндом (вроде он умел распределение памяти выводить) всяк прямее будет.

Ну или можно сделать свой умный указатель, если хочется красоты

AntonI ★★★★
()
Последнее исправление: AntonI (всего исправлений: 1)
Ответ на: комментарий от AntonI

валгринд тоже хороший вариант. Да, там будет видно, если использовались malloc/calloc и базирующиеся на них методы выделения(new и прочее стандартное).

fsb4000 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.