在清洁度和速度方面,动态与静态内存的最佳实践

sta*_*tor 1 c++ memory-management

我有一个名为x的数组,其大小为6*sizeof(float).我知道声明:

float x[6];
Run Code Online (Sandbox Code Playgroud)

会在堆栈内存中为x分配6*sizeof(float).但是,如果我执行以下操作:

float *x;   // in class definition

x = new float[6];   // in class constructor

delete [] x;    // in class destructor
Run Code Online (Sandbox Code Playgroud)

我将为x分配6*sizeof(float)的动态内存.如果x的大小在类的生命周期中没有变化,就清洁度和速度的最佳实践而言(我隐约记得,如果不正确的话,堆栈内存操作比动态内存操作更快),我应该确定x是静态而不是动态分配的内存?提前致谢.

sha*_*oth 8

声明固定大小的数组肯定会更快.每个单独的动态分配都需要找到一个未占用的块,而且速度不是很快.

因此,如果你真的关心速度(有配置文件),规则是你不需要动态分配 - 不要使用它.如果您需要它 - 请考虑分配多少,因为重新分配也不是很快.