I'm trying to implement a row-major array, which is basically a single dimension representation of a 2D array.
This is my class definition
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_;
}
I've a calling function which creates the array.
RMA create_array() {
    RMA arr;
    arr = RMA(N, M);
    std::cout<<"success";
    return arr;
}
And this is my client
int main(int argc, char* argv[]) {
    RMA arr = create_array();
    return 0;
} 
I end up getting segmentation fault. What am I doing wrong.
 
     
    