2012-08-09 79 views
0

我有一个用VC6编写的MFC应用程序。我想暂时为某些操作分配可能的最大内存。为了做到这一点,我需要找到在程序的当前状态下可以分配多少内存。有没有任何有用的功能或代码来做到这一点?如何在当前程序状态下查找最大可分配内存量

当然,我可以尝试按降序多次分配内存并查看它是否已分配。但有没有更好的方法来做到这一点?

+0

你需要连续记忆吗?如果我认为它只能按降序分多次存储 – aasa 2012-08-09 15:01:48

+0

@aasa是应该是连续的。 – 2012-08-09 15:25:28

回答

1

为了获得可以分配的最大内存量,我实际上会按升序分配内存,每次使用realloc分配内存的两倍,直到失败。但是,不能保证分配的内存实际上在物理RAM中,这可能很重要,这取决于您计划使用此内存的方式。有关何时以及为什么内存分配可能失败,请参阅this article

+0

嗯..是升序甚至二进制搜索将工作。但我不确定试错法是否是最佳解决方案。有时,分配失败意味着静默空指针,但有时,它意味着bad_alloc异常。哦,我想我必须忍受它。感谢您的回答。 – 2012-08-09 15:23:21