c++ - 分配大内存的最佳方法

标签 c++ memory memory-management

在我的 Visual C++ 应用程序中,我知道要分配的总对象 (CMyObject) 为 16728064,每个对象为 64 字节,因此要分配的总内存为 1GB。内存将在开始时分配,在应用程序的整个生命周期中使用,并在最后释放。

在这种情况下,分配内存的最佳方式是什么?

目前我尝试在最开始分配内存,如下:

    CMyObject *p = new CMyObject[16728064];

    // Perform tasks.

    delete [] p;

但是大多数时候分配会失败。现在我想做如下:

    CMyObject *p[10];

    p[0] = new CMyObject[1672806];

    p[1] = new CMyObject[1672806];

    …

    // Perform tasks

    Delete [] p[0];

    ….

这似乎工作了一段时间。

因此,我应该将分配分成尽可能小的部分吗?或者遇到这种情况有什么好的解决办法吗?

谢谢

最佳答案

一般来说,是的,您应该将较大的分配分成较小的片段。根据您的系统,它可能没有 1GB 的连续内存。

关于c++ - 分配大内存的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25005661/

相关文章:

c - BSD 上的 `ru_maxrss` 单元?

c++ - 如何获取使用 malloc() 分配的内存块的大小?

c++ - while( scanf ("%d", &n) ) { ... } 在 Linux 上按 Ctrl+D 时不退出

c++ - boost program options 一个选项的多个值

javascript - Javascript 数组中的未定义值是否使用任何内存或在 for-in 循环中迭代?

c++ - 使用 C++ 在 32 位 Linux 中查找进程可用的剩余内存

c++ - 为什么双重否定强制值变成 bool 值?

c++ - 如何从 C++ 中的函数返回一个 vector<T>

ios - 跟踪内存警告源 - iOS

iPhone 在呈现模态视图 Controller 时崩溃