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

山姆

初始化一个成员动态分配的类。分配整个内存块的 new 关键字是否考虑了默认构造函数也会在类内部初始化的成员?

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

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

你能给我推荐一些关于这个主题的书/文章/网页吗?

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

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);
}
约翰·兹温克

鉴于您已经说过Octrees的数量最多为 7 个并且population_to_allocate以千计,您可以做的最简单有效的事情是从 更改vec3*std::vector<vec3>然后你的构造函数看起来像这样:

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

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在flutter中使用new关键字

C ++初始化使用“ new”关键字分配的结构的对象成员

使用内部类中的方法而没有使用new关键字进行对象初始化是否会导致C#Winforms中的内存泄漏

C ++中关键字new的解释

C#“new”关键字

在类中使用构造函数的打字稿不允许使用 new 关键字

您是否需要在Dart中使用“ new”关键字?

在Java中使用new关键字访问静态资源

在 C++ 中使用 new 关键字/运算符

在 Objective-C++ 中使用“new”关键字 -> EXC_BAD_ACCESS 错误

为什么不能使用new关键字在Java中初始化抽象类?

New关键字是否调用继承对象的函数?

C#/new 关键字/类成员参考

Java中的`new`关键字是否多余?

C ++中没有“ new”关键字的内存分配

如何在不使用C#中的new关键字初始化变量的情况下用值填充数组变量?

如何在C#的静态类中使用new关键字作为属性声明一个类

在构造函数中的服务初始化期间是否需要使用'readonly'关键字?

在春季何时使用new关键字和autowired关键字

在ASP.NET MVC 5中创建对象时何时在C#中使用NEW关键字

在Dart中,使用'new'关键字和直接调用构造函数有什么区别?

“ new”关键字在ANSI C中意味着什么?

C#-关键字用法virtual + override与new

是否可以在不使用“ new”关键字的情况下使用Javascript原型?

如果不使用new关键字,是否会发生内存泄漏?

何时在C#中将“ new”关键字与结构一起使用

使用new关键字创建单个对象

使用new []关键字时,类型不完整

何时使用随播对象工厂与new关键字