是否正在考虑 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
个实例。
正在初始化具有动态分配成员的 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
个实例。