Есть ли какой-либо инструмент, который поддерживает профилирование использования памяти на основе контрольных точек для С++?

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

Пожалуйста, ребята, можете предложить любой инструмент или процесс, который может помочь мне выполнить профилирование памяти на основе контрольных точек как на платформе Linux, так и на платформе Windows.

заранее спасибо


Следующий код

_CrtMemState memState1;
_CrtMemCheckpoint(&memState1);

char *p = new char[100];
p = new char[100];
p = new char[100];
p = new char[100];
p = new char[100];

_CrtMemState memState2;
_CrtMemCheckpoint(&memState2);
_CrtMemState memStateDiff;
_CrtMemDifference(&memStateDiff, &memState1, &memState2);
_CrtMemDumpStatistics(&memStateDiff);'

дает мне вывод

0 bytes in 0 Free Blocks.
0 bytes in 0 Normal Blocks.
0 bytes in 0 CRT Blocks.
0 bytes in 0 Ignore Blocks.
0 bytes in 0 Client Blocks.
Largest number used: 0 bytes.
Total allocations: 0 bytes.

Я использую Visual Studio 2010 Professional в Windows 7 Ultimate.


person Khaled    schedule 13.09.2012    source источник
comment
Нет поста, который точно соответствует вашим требованиям? Что-то отдаленно близкое? Внутреннее управление памятью очень зависит от поставщиков, и поэтому вы не получите готового ответа на Windows и Linux.   -  person WhozCraig    schedule 13.09.2012
comment
Вы действительно компилируете для режима отладки? Вам нужно определить _CRTDBG_MAP_ALLOC и пересобрать, иначе вы не используете malloc/free, который генерирует статистику.   -  person Neil    schedule 14.09.2012


Ответы (1)


Использование памяти на основе контрольных точек встроено в отладочные библиотеки CRT в Visual C++.

http://msdn.microsoft.com/en-us/library/974tc9t1(v=vs.80).aspx

person Neil    schedule 13.09.2012