这是在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() {}
};

此外,作用域数组无法复制-因此,您可以避免另一个答案中提到的讨厌的复制构造函数释放问题。

08-16 11:57