C++ 动态分配内存时的内核转储

C++ 动态分配内存时的内核转储,c++,C++,我想创建一个具有以下定义的矩阵类 #include <iostream> #include <vector> using namespace std; void display(vector<int>arr); int get(void); vector<int> radix_sort(vector<int>); class Input{ private: int temp; public: int get(){

我想创建一个具有以下定义的矩阵类

#include <iostream>
#include <vector>

using namespace std;

void display(vector<int>arr);
int get(void);
vector<int> radix_sort(vector<int>);

class Input{
private:
    int temp;
public:
    int get(){
        cin >> temp;
        return temp;
    }
};

class Matrix {
private:
    int **matrix;
public:
    Matrix(int r,int c){
        this->matrix = new int*[r];
        for(int i = 0;i < r; i++)
            this->matrix[i] = new int[c];
    }
    int get(int r,int c){
        return this->matrix[r][c];
    }
};
int main() {
    Input inp;

    int n;
    cout<<" Enter Number of Elements : ";
    cin >> n;

    vector<int> arr;
    cout <<"Enter "<<n<<" elements\n";
    for(int i = 0 ; i < n ; i++)
        arr.insert(arr.begin() + i,inp.get());
    cout <<"Before Sort\n";
    display(arr);
    radix_sort(arr);

}
void display(vector<int> arr){
    for(int i = 0 ;i < arr.size(); i++)
        cout << arr.at(i) << " ";
    cout<<endl;
}

vector<int> radix_sort(vector<int> arr){
    Matrix mat(arr.size(),10); // This call is creating the problem.
}
我的代码有什么问题?请帮忙

vector<int> radix_sort(vector<int> arr){
    Matrix mat(arr.size(),10); // This call is creating the problem.
    return something???; // <--- missing
}

函数必须按值返回vector,但不能返回垃圾返回的任何内容。您应该配置编译器,使其在这种情况下产生错误,或者至少警告我们所有代码!错误在免费的callQuestions查找调试帮助中。为什么这段代码不起作用?必须包括所需的行为、特定的问题或错误以及在问题本身中重现这些问题所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。请参阅:.@Parnab Sanyal看起来您在程序中的某个地方使用了复制构造函数或复制赋值运算符。你还需要定义析构函数。这里有完整的代码@Jean-Françoisfare。我真的不知道它为什么这么做,但我想知道:既然你知道向量,为什么不使用向量向量创建一个真正的矩阵对象呢?你不会有内存泄漏,内存复制问题,等等,很明显我错过了。我以为这样的建筑是不可能的…哦,那是可行的。我应该在每次编译代码时使用-Wall。感谢如果您的编译器配置正确,它将拒绝它,例如gcc可能会接受它,这取决于您传递给它的选项it@ParnabSanyal,在开始使用矩阵之前,请先查找。好的@RSahu:。
vector<int> radix_sort(vector<int> arr){
    Matrix mat(arr.size(),10); // This call is creating the problem.
    return something???; // <--- missing
}