tho*_*rmi 2 c++ memory allocation dynamic
我有一个带动态数组(DA)的类
class DA{
private:
double* array;
int size N;
//other stuff
public:
DA(){
array=NULL;
}
DA(int PN){
N=PN;
array=new double[N];
};
//destructor and other stuff
}
Run Code Online (Sandbox Code Playgroud)
这似乎没问题.现在我想要一个具有一个DA对象的类"Application":
class App{
private:
DA myDA;
public:
App(int N){
//create myDA with array of size N
DA temp(N);
myDA=temp;
};
}
Run Code Online (Sandbox Code Playgroud)
问题是,我不知道如何在App构造函数中创建myDA.我这样做,内存分配给temp,然后myDA指向temp.但我想在构造函数完成后删除为temp分配的内存.因此,当我执行程序时出现内存错误.那么如何正确分配内存呢?
使用构造函数初始化列表:
App(int N) : myDA(N) {}
Run Code Online (Sandbox Code Playgroud)
请注意,DA除非您遵循三个规则,否则您的类将被破坏,或者通过使用an std::vector<double>,an std::unique_ptr<double[]>或boost范围数组来简化问题:
#include <vector>
class DA{
private:
std::vector<double> data; // "array" is a std lib container name
public:
DA(int PN) : data(PN) {}
// no need to write destructor, copy constructor or assignment operator.
};
Run Code Online (Sandbox Code Playgroud)