• ベストアンサー

配列動的確保

結論から申しますと,aaa[値1][値2][値3][値4]配列を動的に確保したいのです. unsigned short *****aaa; という方法では確保できるのですが,unsigned short ****aaaとようにしてできるのでしょうか? この他にも違う方法があればご教授ください. どうぞよろしくお願いいたします.

質問者が選んだベストアンサー

  • ベストアンサー
  • Zozomu
  • ベストアンサー率22% (123/545)
回答No.1

unsigned short ****aaa; では、アドレスを保存する領域は確保されますが、 実際にデータを格納するメモリ領域まで確保される訳ではありません。 malloc関数でメモリ領域を確保しないと、 何時アプリケーションエラーを起こすかわからない 危険なプログラムが出来上がります。 aaa = malloc( sizeof( unsigned short **** ) * 値1 ) ; for (i=0 ; i<値1 ; i++ ) { aaa[i] = malloc( sizeof( unsigned short *** ) * 値2 ) ; for (j=0 ; j<値2 ; j++ ) { aaa[i][j] = malloc( sizeof( unsigned short ** ) * 値3 ) ; for (k=0 ; k<値3 ; k++ ) { aaa[i][j][k] = malloc( sizeof( unsigned short * ) * 値4 ) ; for (l=0 ; l<値4 ; l++ ) { aaa[i][j][k][l] = malloc( sizeof( unsigned short ) ) ; } } } } こんな感じで領域確保をしないと駄目です。 これは処理の途中で値1~4の値が全てわかる時の例です。 処理が進むたびに領域が必要になる場合は、 当然のことながら、その都度メモリ領域を確保する様にしなければなりません。

graduate_student
質問者

お礼

早速の回答ありがとうございます. malloc関数,知りませんでした. 以後気をつけたいと思います.

その他の回答 (1)

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.2

unsigned short (*aaa)[値2][値3][値4] = malloc(sizeof(unsigned short [値1][値2][値3][値4]));

graduate_student
質問者

お礼

やはりmalloc関数を使うのですね. ありがとうございました.