VS2005:限制堆大小
时间:2020-03-06 14:24:04 来源:igfitidea点击:
是VS2005 C ++编译器标志,例如Xmx ??? M java标志,因此我可以限制在Windows上运行的应用程序的堆大小。
我需要限制堆大小,以便可以填充内存以找出当前的可用内存。 (代码也运行在嵌入式系统上,这是获得内存使用率的最佳方法)
解决方案
我们可能想研究gflags实用程序(在Windows调试工具中)是否可以执行此操作。它可以利用本机应用程序堆完成许多其他有趣的事情。
堆大小取决于所使用的分配器。可能还会有一些Windows API调用限制了进程可以分配的内存量,但是我不知道该调用什么,抱歉,我现在不想找它。但是总的来说,如果我们编写自己的分配器(也许只是包装编译器提供的malloc()或者new运算符),则可以通过这种方式人为地限制堆大小。
另外,如果我们有自己的分配器(即使只是包装器),则可以跟踪总共分配了多少内存。如果我们知道可用数量,则可以做一些减法,然后得到总金额。然后,我们也可以获取碎片统计信息,例如最大的免费块。
我们可以通过在以下位置设置大小来设置程序的堆大小:
链接器->系统->堆保留大小
也可以使用/ HEAP:reserve
在编译器命令行中设置。