次のコードを使用して、C で動的な 2 次元配列を割り当てようとしています。
int **allocateMatrix(int rows, int columns) {
int i = 0;
int **p = NULL;
p = (int**) calloc(rows, sizeof(int*));
for(; i < rows; i++) {
p[i] = (int*) calloc(columns, sizeof(int));
}
return p;
}
コードは機能しますが、実際には必要なメモリの 2 倍を割り当てています。
たとえば、引数rows = 2
を渡すと、 columns = 3
2 行 x 8 列の配列が得られます。
私は何か間違ったことをしていますか?
ありがとうございました。
編集:
(ファイルから読み込まれる) マトリックスの内容は次のとおりです。
-1 5 0
4 0 2
これは、値の割り当てと代入後のメモリの外観です。