【发布时间】:2010-10-10 01:47:34
【问题描述】:
我需要用new分配大块内存。
我坚持使用 new,因为我正在为两部分应用程序的生产者端编写一个模拟。实际的生产者代码正在分配这些大块,我的代码有责任删除它们(在处理它们之后)。
有没有一种方法可以确保我的应用程序能够从堆中分配如此大量的内存?我可以将堆设置为更大的大小吗?
我的情况是 64 个 288000 字节的块。有时我要分配 12 个,而其他时候我要分配 27 个。我得到一个 std::bad_alloc 异常。
这是:C++、Linux 上的 GCC(32 位)。
【问题讨论】:
-
您需要一口气完成所有这些吗?否则,您可以使用内存池和自定义分配器来管理池。
-
正如我所说,我试图模拟生产代码将要做什么。如果可以的话,我会使用静态分配的内存池。
-
您可以使用静态分配的池,并将您的删除调用替换为“FreeBlock”函数。这样你就可以检查你是否已经填满了每一个获得的块。
-
是的,我可以这样做,但我仍然想知道为什么我无法分配可用的内存。
标签: c++ memory new-operator bad-alloc