我知道这可能过于简单 - 但我需要知道我可以在程序中分配的可用内存量。 这是一个Windows移动项目(c ++),似乎我可能有隐藏在某处的内存泄漏。调用一个返回我可以访问的堆存储的剩余大小(或剩余块)的函数将是完美的。 有没有办法遍历运营商新使用的可用内存块?或者是内置的WINAPI(或winmobile)功能吗?
答案 0 :(得分:1)
结帐GlobalMemoryStatus。它将提供免费的物理内存量。请注意,较旧的Windows CE每个进程限制强制执行32MB(Windows CE 6.0提升此限制)。
答案 1 :(得分:0)
你签出了The CLRProfiler for the .Net Compact Framework吗?
这是Power Toys for .NET Compact Framework 3.5下载的一部分。
入门视频教程:How Do I: Use the CLR Profiler to Detect Finalization Problems On My Device?
答案 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