【发布时间】:2013-03-17 17:16:27
【问题描述】:
是否有可用的函数可以获取当前在堆上分配的内存块数?它可以是 Windows/Visual Studio 特定的。
我想用它来检查函数是否泄漏内存,而不使用专用的分析器。我正在考虑这样的事情:
int before = AllocatedBlocksCount();
foo();
if (AllocatedBlocksCount() > before)
printf("Memory leak!!!");
【问题讨论】:
-
只需循环运行您的代码并查看任务管理器:P
-
如果没有这样的功能,可以作为替代,是的。但并非总是如此,某些函数不能循环运行,因为它们从套接字等读取,并且服务器不会重新发送相同的数据。有时状态改变了,函数不能以同样的方式第二次运行。这只能用于非常简单的功能。
-
@Alon 分配的堆内存和保留的操作系统(任务)内存之间可能存在巨大差异。
-
CRT,这些功能你试过了吗? msdn.microsoft.com/en-gb/library/x98tx3cf.aspx
-
谢谢,_CrtMemDifference 似乎是我要找的。span>
标签: c++ visual-studio memory-leaks