我試圖在C中分配一個3D數組。你可以告訴它,它存儲圖像數據,格式爲Array [height] [width] [channel];這是我的代碼。使用malloc分配一個3D數組()
BYTE*** allocateImageArray(INT_32 width, INT_32 height, INT_32 channels) {
BYTE*** array;
INT_32 i, j;
array = malloc(height * sizeof(BYTE**));
for(i = 0; i < height; i++) {
array[i] = malloc(width * sizeof(BYTE*));
for(j = 0; j < channels; j++) {
array[i][j] = malloc(channels * sizeof(BYTE));
}
}
printf("Pixel Array Size: %d\n", sizeof(array));
return array;
}
它編譯得很好。但是,數組始終爲8(由sizeof指示)。當我在代碼中稍後嘗試訪問數組時,程序就會崩潰。
所有的答案在先進的感謝。
編輯:忘了包括。我已經計算出發生程序崩潰的位置。當我嘗試爲數組末尾的一個BYTES賦值時,會發生這種情況。
爲什麼不'陣列= malloc的(高度*寬* *信道的sizeof(BYTE));'? –
這實際上是我的原始代碼,但它也有同樣的問題。另外,它沒有定義有多少行,列和(不管第三維被稱爲)它是什麼? – user3039913
這取決於你如何訪問元素。例如'array [0] [0] [0]'。 –