我有一个存储16个浮点数组的类。我使用浮点指针将它们存储为数组,因此我必须使用构造函数中的new运算符初始化数组。我的问题是,将16个浮点数组直接定义为类的一部分是更有效/更好的做法,还是应该继续让类通过指针存储数据并在构造函数中调用new?
答案 0 :(得分:1)
在内存管理方面没有普遍的“更好的做法”,所以你应该为你的特定设计做正确的事。
如果总是精确分配16个浮点数,则在类中嵌入数组将减少对动态分配器的调用次数。当对象存储在自动存储器中时,这可能会有所帮助,但有些情况可能会造成伤害。例如,如果在自动存储中创建此类的大型数组,则嵌入数组会增加堆栈溢出的可能性。
最好的方法是分析您的内存使用情况和时间,并查看分配这些数组是否会导致显着的减速,或者是否会对内存碎片造成重大影响。如果当前的方案没有给您带来任何麻烦,则没有理由更换它。
答案 1 :(得分:1)
如果你知道你需要16个浮点数并且它不太可能改变,那么你应该使用它:
struct MyClass
{
....
float myData[16];
};
使用这种简单的设计没有错。如果数组的大小因情况而异,那么最好使用以下内容:
template <int _len_data>
struct MyClass
{
....
float myData[_len_data];
};
之后,您可以定义变量,例如:
MyClass<16> a1;
MyClass<64> a2;