【发布时间】:2015-10-02 15:28:48
【问题描述】:
我正在尝试实现一个以行为主的数组,它基本上是二维数组的一维表示。
这是我的类定义
class RMA{
public:
RMA(){
size_=0;
row_=0;
column_=0;
arr_ = new double[size_];
}
RMA(int n, int m){
size_ = n*m;
column_ = m;
row_ = n;
if(size_== 0) arr_ = 0;
else arr_ = new double[size_];
}
RMA(const RMA& arr) {
size_ = arr.size_;
if(this != &arr){
delete [] arr_;
arr_ = new double[size_];
for(int i=0; i<size_; i++){
arr_[i] = arr.arr_[i];
}
}
return *this;
}
const double& operator() (int n, int m) const{
return arr_[n*column_+m];
}
double& operator()(int n, int m){
return arr_[n*column_+m];
}
~RMA(){delete[] arr_ ;}
private:
int size_;
int column_;
int row_;
double* arr_;
}
我有一个创建数组的调用函数。
RMA create_array() {
RMA arr;
arr = RMA(N, M);
std::cout<<"success";
return arr;
}
这是我的客户
int main(int argc, char* argv[]) {
RMA arr = create_array();
return 0;
}
我最终得到分段错误。我做错了什么。
【问题讨论】:
-
故障出现在哪里?当它发生时,你试图做什么?
-
arr_ = new double[size_];size_有多大?而且您的代码至少违反了Rule of Threemultiple 次的一部分。 -
调用create_array()时出现故障
-
大小200万左右
-
你违反了rule of three。
标签: c++ arrays segmentation-fault