gpt4 book ai didi

C++堆状态差异

转载 作者:可可西里 更新时间:2023-11-01 11:59:25 24 4
gpt4 key购买 nike

有一个用 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 个断点之间增加了 2 MB。

所以,创建的转储是没有用的。你能解释一下剩余的内存分配在哪里吗?

最佳答案

尝试创建一个重载的全局新建和删除运算符的简单测试,该运算符将每个请求记录到一个文件中。您可以使用静态全局状态打开/关闭日志记录。这将为您提供一种工具来记录您可以控制的每个内存分配。

关于C++堆状态差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11845458/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com