初始化一个成员动态分配的类。分配整个内存块的 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);
}
鉴于您已经说过Octree
s的数量最多为 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] 删除。
我来说两句