Для того, чтобы исследовать наращивание памяти в моем приложении (нативный код на платформе Windows)
Я сделал следующее
1) Выполнить тестовый случай в итерации
2) после каждой итерации сбрасывал UMDH и затем делал diff между определенными итерациями
чтобы увидеть схему накопления памяти в стеках вызовов.
Мне нужна некоторая помощь здесь со следующими данными, которые мне нужно интерпретировать
а) В самом конце diff log я нахожу что-то вроде этого
Общее увеличение == 86928 запрошено + 38080 накладных расходов = 125008
Что именно здесь над головой?
Если я сложу все распределение и вычту освобождение, я получу число, близкое к # запрашиваемой сумме. Я не могу учесть накладные расходы.
б) Еще одна помощь, необходимая для стека вызовов
ниже приведен снимок части стека вызовов
sqlncli11!PrepOrPrepExecQuery+159
sqlncli11!SQLExecute+32D
ODBC32!SQLExecute+342
sscdms80!CSSODBCSqlCursor::DoExecuteStmt+B4C (m:\some filename, 2903)
sscfdm!CSSLockSqlCursor::DoExecuteStmt+11A (m:\Another filename, 5237)
sscfdm!CSSSqlCursor::Execute+129 (m:\yet Anotherfilename, 5685)
sscfdm!CSSSqlObj::Execute+D86 (m:\Filename.cpp, 27500)
sscfom!CSSBusComp::SqlExecute+3A (m:\someotherfile.cpp, 28872)
With each function name there is an offset attached (a HEX number) example sscfom!CSSBusComp::SqlExecute+3A (here 3A is the offset).
каково значение этого смещения? Я не нашел никакого документа, объясняющего это.
c) Как дельта в частных байтах, захваченных perfmon, соотносится с дельтой в стеке вызовов в течение этого интервала?
Задача ещё не решена.