有一个用 C++ 编写的大项目。一些 gui 操作(按钮单击)分配 2 MB 内存。这不是内存泄漏,当然内存稍后会被释放。但我需要调查分配了哪些对象以尝试减少内存分配大小。
所以我尝试使用 debug crt
OnBtnClick()
{
//breakpoint1
_CrtMemState s1;
_CrtMemCheckpoint( &s1 );
//The logic itself
_CrtMemDumpAllObjectsSince(&s1);
_CrtMemState s2;
_CrtMemCheckpoint( &s2 );
_CrtMemState s3;
if ( _CrtMemDifference( &s3, &s1, &s2) )
_CrtMemDumpStatistics( &s3 );
//breakpoint2
}
调试报告说只分配了 400 KB。但是任务管理器中两个断点之间的进程内存增加了 2 MB。
因此,创建的转储是无用的。你能解释一下剩余的内存分配在哪里吗?