这是在C++构造函数中通过new
分配内存的正确方法。参数列表中的第一种方式:
class Boda {
int *memory;
public:
Boda(int length) : memory(new int [length]) {}
~Boda() { delete [] memory; }
};
或在构造函数的主体中:
class Boda {
int *memory;
public:
Boda(int length) {
memory = new int [length];
}
~Boda() { delete [] memory; }
};
谢谢,博达·西多(Boda Cydo)。
最佳答案
我认为最简单的方法是使用boost scoped array并让别人的经过良好测试的库代码为您处理所有这一切。
所以:
class Boda {
boost::scoped_array<int> memory;
public:
Boda(int length) : memory(new int [length]) {}
~Boda() {}
};
此外,作用域数组无法复制-因此,您可以避免另一个答案中提到的讨厌的复制构造函数释放问题。