我正在使用多维数组,但我遇到了一个异常,我搜索了很多,但我找到了我正在使用的相同答案,当我尝试分配 matriz[i] = new double[n] 时异常跳转。我已经尝试了评论和未评论的解决方案,但没有运气。
void interpol(double *arr_x, double *arr_y, int n, double *results) {
//double** matriz = new double*[n];
double** matriz;
matriz = (double**) malloc(n * sizeof(double*));
for(int i = 0; i < n; i++){
//matriz[i] = new double[n+1];
matriz[i] = (double*) malloc(n+1 * sizeof(double));
for(int j = 0; j < n; j++) {
matriz[i][j] = pow(arr_x[i],j);
}
matriz[i][n] = arr_y[i];
}
gaussiana(matriz, n, results);
}
- - 编辑 - -
功能 gaussiana 工作正常,因为我已经在这个功能之外进行了测试。异常被抛出: //matriz[i] = new double[n]; matriz[i] = (double*) malloc(n * sizeof(double));
n 永远不会超过 10。
抛出的异常是:
Interpolacion.exe 中 0x00071c4d 处的第一次机会异常:0xC0000005:访问冲突读取位置 0x00000000。Interpolacion.exe 中 0x774b15de 处未处理的异常:0xC0000005:访问冲突读取位置 0x00000000。程序“[8012] Interpolacion.exe: Native”已退出,代码为 -1073741819 (0xc0000005)。
---- EDIT---- 我终于让它工作了,问题不在matriz中,而是在arr_x/arr_y中,外部例程发送数据错误(奇怪的是错误和堆栈跟踪总是将我引向新的double [n] 分配)