是否正在考虑 new 关键字由默认构造函数初始化的 class 中的元素也在 C++ 中使用 new 关键字?

Is considring new keyword the elements inside the class that are initialized by the default constructor also with new keyword in C++?

正在初始化具有动态分配成员的 class。 考虑到默认构造函数也将在 class 中初始化的成员,new 关键字是否分配整个内存块?

我应该关心这些成员在内存中的位置(分散或放在一起)吗?我在递归算法中处理大量顶点数组,该算法根据某些错误标准执行自适应网格细化。而且我需要遍历这些数组来做其他操作,所以我需要性能。

此外,作为相关主题。就性能而言,下面用于在 main 函数中声明 class 的两种方法之一是首选吗?

你能给我推荐一些关于这个话题的book/article/webpage吗?

总结问题的玩具代码示例:

class Octree {

    vec3* Vertex;
    vec3* Cell_Centers;

    public:

    Octree(unsigned population_to_allocate) //constructor
    {
        Vertex = new vec3[population_to_allocate*8];
        Cell_Centers = new vec3[population_to_allocate];
    }

int main()
{
    unsigned population_to_allocate = 3000;
    Octree* newOctree = new Octree(population_to_allocate);
    Octree stackOctree(population_to_allocate);
}

鉴于您已经说过 Octree 的数量最多为七个而 population_to_allocate 为数千个,您可以做的最简单有效的事情是从 vec3*std::vector<vec3>。那么您的构造函数将如下所示:

Octree(unsigned population_to_allocate) //constructor
    : Vertex(population_to_allocate)
    , Cell_Centers(population_to_allocate)
{
}

不使用 new,您可以轻松避免内存泄漏和错误。没有理由让事情比这更复杂,因为你只有少数 Octree 个实例。