多次元配列を使用していますが、例外が発生します。多くの検索を行いましたが、使用しているのと同じ答えが見つかりました。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)で終了しました。
----編集----私はついにそれを機能させました、問題はmatrizにありませんでした、しかしarr_x / arr_yで、外部ルーチンはデータを間違って送信していました(奇妙なことにエラーとスタックトレースは常に私に新しいdoubleを参照しました[n]割り当て)