剩余的堆大小

时间:2009-09-17 10:54:50

标签: c++ heap-memory

我知道这可能过于简单 - 但我需要知道我可以在程序中分配的可用内存量。 这是一个Windows移动项目(c ++),似乎我可能有隐藏在某处的内存泄漏。调用一个返回我可以访问的堆存储的剩余大小(或剩余块)的函数将是完美的。 有没有办法遍历运营商新使用的可用内存块?或者是内置的WINAPI(或winmobile)功能吗?

3 个答案:

答案 0 :(得分:1)

结帐GlobalMemoryStatus。它将提供免费的物理内存量。请注意,较旧的Windows CE每个进程限制强制执行32MB(Windows CE 6.0提升此限制)。

答案 1 :(得分:0)

答案 2 :(得分:0)

查看堆状态报告功能:

http://msdn.microsoft.com/en-us/library/wc28wkas.aspx

首先,包括crtdbg:

    #include <crtdbg.h>

然后在你的代码中:

_CrtMemState ms;
_CrtMemCheckpoint(&ms);
_CrtMemDumpStatistics(&ms);

这将输出到调试输出窗口:

      0 bytes in 0 Free Blocks.
      56596 bytes in 2056 Normal Blocks.
      17895 bytes in 83 CRT Blocks.
      0 bytes in 0 Ignore Blocks.
      0 bytes in 0 Client Blocks.
      Largest number used: 74491 bytes.
      Total allocations: 240054 bytes.

默认堆保留空间为1MB,可以在项目属性,配置属性,链接器,系统,“堆保留大小”(VS 2010)中进行调整

您可能还想查看_CrtSetDbgFlag http://msdn.microsoft.com/en-us/library/5at7yxcs(v=VS.100).aspx