首页 > 解决方案 > _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;

我的问题是,我可以在应用程序结束之前取消分配在堆栈上创建的对象,因此内存泄漏检测不会显示它们吗?你不能删除它们。

谢谢你。

标签: c++debuggingmemory

解决方案


推荐阅读