分配大内存的最佳方式

ala*_*ncc 5 c++ memory memory-management

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

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

当前我尝试在开头分配内存,如下所示:

    CMyObject *p = new CMyObject[16728064];

    // Perform tasks.

    delete [] p;
Run Code Online (Sandbox Code Playgroud)

但是大部分时间配置都会失败.现在我想做如下:

    CMyObject *p[10];

    p[0] = new CMyObject[1672806];

    p[1] = new CMyObject[1672806];

    …

    // Perform tasks

    Delete [] p[0];

    ….
Run Code Online (Sandbox Code Playgroud)

这似乎有一段时间了.

因此,我应该将分配分成尽可能小的部分吗?或者对于这种情况有什么好的解决方案吗?

谢谢

小智 2

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