FC2ブログ

多次元配列のmalloc

多次元配列の領域確保

例:2次元)
int i, N=10, M=100;
double **ary;

ary = (double**)malloc( sizeof(double*)*N );

for( i=0; i < N; i++){
 ary[i] = (double*)malloc( sizeof(double)*M );
}

~~~~~~~~~~~~~~~~~

領域解放
for( i=0; i < N; i++){
 free(ary[i]);
}
free(ary);

~~~~~~~~~~~~~~~~~

いきなりfree(ary);とやるとNで確保した方の領域が解放されない。
確保領域が小さいとバグは見えないが、ループで繰り返しているとエラーが生じる事もある。

~~~~~~~~~~~~~~~~~

補足)領域の静的確保の場合
double *a[2];

free(a[0]); free(a[1]); //ここまではOK
free(a); //エラーになる


freeはあくまでも動的確保したモノにのみ使用可能。
スポンサーサイト



テーマ : ひとりごと。
ジャンル : 日記

コメント

非公開コメント

中野梓
プロフィール

dhythm

Author:dhythm
関西に住む大学院生。専攻は宇宙物理学。
専攻が宇宙物理学の理学修士。現在は社会人。
Mac, Windowsを併用。Linuxでサーバーマシンをたてる計画中。
使用言語 : C, Java, COBOL, Perl, Python, Object-C

社会の荒波にもまれながら、日々勉強中。

アクセスカウンター
最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QRコード