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