c++ - _CRTDBG_MAP_ALLOC - 如何排除堆栈对象
问题描述
在 MSVS c++ 中,我启用了内存泄漏检测:
#define _CRTDBG_MAP_ALLOC
如果我创建一个在堆栈上创建的(自定义类的)对象,我会得到如下输出:
Detected memory leaks!
Dumping objects ->
{84} normal block at 0x00BBA448, 8 bytes long.
Data: <$| > 24 7C BB 00 00 00 00 00
这是有道理的,因为分配会一直保留到应用程序结束。这不是内存泄漏。
如果我对同一个对象使用 NEW 和 DELETE,则不会出现“内存泄漏”。
MyClass* MyObjectPointer = new MyClass();
delete MyObjectPointer;
我的问题是,我可以在应用程序结束之前取消分配在堆栈上创建的对象,因此内存泄漏检测不会显示它们吗?你不能删除它们。
谢谢你。
解决方案
推荐阅读
- django - Django - 无法使用我的表单上传文件
- amazon-web-services - 无法从 EC2 实例通过 aws cli 访问 S3
- .net - 从创建它的线程以外的线程访问的控件
- python - 为什么在分配给变量时迭代 fetchall() 会变慢?
- android - 如何根据活动意图设置视图的可见性
- php - 使用 REMOTE_ADDR 变量时,Wordpress 给出错误“出了点问题。您的更改可能尚未保存。(..)”
- java - 如何检查房间数据库是否为空
- xml - 使用 XSL 转换查找两个 XML 之间的差异
- codeigniter - 使用 .htaccess 删除 codeigniter 中的 url 段
- javascript - JS:在调用文件中的每个其他函数之前调用某个函数