Отладка предполагаемой утечки памяти в приложении Windows C ++, мне удалось получить статистику выделения кучи, которая выглядит следующим образом (это результат команды !heap -stat -h ...
, выполненной для соответствующей кучи в WinDbg):
size #blocks total ( %) (percent of total busy bytes)
651 686f0 - 293a51f0 (54.65)
260 68701 - f80a260 (20.55)
11c 68705 - 73dc98c (9.60)
...
Из того, что я знаю о приложении, это действительно выглядит как утечка, но, учитывая, что я работаю только с дампом, в котором нет пользовательской трассировки стека , я застрял в догадкахи другие методы.
Одна вещь, о которой я могу подумать, - это понять, к какому классу или структуре относятся эти выделения в байтах 0x651 или 0x260, поскольку эти распределения выглядят довольно подозрительно.Простой подход, который я могу придумать, - перечислить все классы / структуры, перечисленные в моем приложении, и получить для него sizeof
результатов.
Есть ли какой-нибудь простой способ сделать это (т.е. не прибегая к ручному извлечениюструктуры / классы с каким-то синтаксическим анализатором C ++ (или, что еще хуже, с регулярным выражением) и выполняющим на нем sizeof
в компиляторе или чем-то подобном)?