我正在尝试用 C++ 构建一个与矩阵和矩阵函数一起工作的程序。我的代码编译正常,但是当我尝试执行它时,我得到了消息:
分段错误(核心转储)
我的代码有很多看起来像这样的功能:
void function(double **matrix, ...) {
//Operations with the matrix
}
我这样调用函数:
double **M;
function(M,...);
通过研究该消息,我发现我需要动态分配要使用的矩阵,因此编写了以下应该执行此分配的函数:
void allocMatrix(double **M, int nl, int nc) {
M = new double*[nl];
for(int i = 0; i < nl; ++i)
M[i] = new double[nc];
}
void freeMatrix(double **M, int nl) {
for(int i = 0; i < nl; ++i)
delete [] M[i];
delete [] M;
}
现在使用这些函数,我尝试调用我的其他函数执行以下操作:
double **M;
allocMatrix(M, numberOfLines, numberOfColumns);
function(M,...);
freeMatrix(M, numberOfLines);
但是,即使进行了此更改,我仍然收到消息“分段错误(核心转储)”。
我什至尝试在这样的函数中分配矩阵:
void function(double **matrix, ...) {
allocMatrix(M, numberOfLines, numberOfColumns);
//Operations with the matrix
freeMatrix(M, numberOfLines);
}
但它也没有奏效。
有谁知道我哪里不对?