※ ChatGPTを利用し、要約された質問です(原文:関数内での多次元配列のメモリの動的確保について)
関数内での多次元配列のメモリの動的確保について
このQ&Aのポイント
関数内で参照渡しを使用して配列の動的なメモリの確保を試みているが、うまくいかない。
main関数内でメモリの動的確保が成功し、正常に動作している。
Kakuho関数を介してメモリの動的確保を試みたが、エラーが発生してプログラムが落ちる。
関数内で、参照渡しをして配列の動的なメモリの確保をしようとしているのですが、うまくいきません。
はじめに、main関数内で、
int main(void){
double *testdata1;
testdata1 = (double*)malloc( sizeof(double) * 10 );
if( testdata1 == NULL ){
printf( "ERROR:testdata1" );
exit(0);
}
testdata1[3] = 20.4;
printf( "test = %g\n", testdata1[3] );
}
を実行したところうまくいきました。
そこで、
int main(void){
double *testdata1;
Kakuho( &testdata1 );
printf( "test = %g\n", testdata1[3] );
}
void Kakuho( double **testdata2 ){
*testdata2 = (double*)malloc( sizeof(double) * 10 );
if( *testdata2 == NULL ){
printf( "ERROR:testdata2" );
exit(0);
}
*testdata2[3] = 20.4;
}
としましたが、成功してくれません。
コンパイルは通りますが実行するとエラーが発生して落ちます。
(上記のprintfのERRORではありません。)
動作環境はXPのVCC7です。よろしくお願いします。
補足
回答ありがとうございます。 >(*testdata2)[3] = 20.4; >に直してください。 直したところ、正しく実行できました。 ポインタと配列をかね合わせる時には()が必要なのは見落としてました。。。