VS2005 C ++编译器标志是否像Xmx ??? M java标志一样,因此我可以限制在Windows上运行的应用程序的堆大小。
我需要限制堆大小,以便我可以填充内存以找出当前的空闲内存。 (该代码也在嵌入式系统上运行,这是获得内存使用的最佳方法)
答案 0 :(得分:1)
您可以通过设置大小来设置程序的堆大小:
Linker -> System -> Heap Reserve Size
也可以使用/HEAP:reserve
答案 1 :(得分:0)
您可能想要查看gflags实用程序(在Windows调试工具中)是否可以执行此操作。它可以用本机应用程序堆做很多其他有趣的事情。
答案 2 :(得分:0)
堆大小取决于使用的分配器。很可能还有一些Windows API调用限制了进程可以分配的内存量,但是我不知道一个,我现在不想找它,抱歉。但一般来说,如果你编写自己的分配器(可能只是环绕编译器提供的malloc()
或new
运算符),你可以人为地限制堆大小。
或者,如果你有自己的分配器,即使只是一个包装器,你也可以跟踪总共分配了多少内存。如果您知道可用的金额,您可以做一些减法并完成总计。您可能还可以获得碎片统计信息,例如最大的空闲块。