2

我有一个存储 16 个浮点数组的类。我使用浮点指针将它们存储为数组,因此我必须使用构造函数中的 new 运算符初始化数组。我的问题是,将 16 个浮点数的数组直接定义为类的一部分是否更有效/更好,还是我应该继续让类通过指针存储数据并在构造函数中调用 new?

4

2 回答 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 回答