Я пытаюсь выделить 3D-массив в C. Как вы можете сказать, он должен хранить данные изображения в форме Array [height] [width] [channel]; Это код, который у меня есть.Выделение 3D-массива в C с помощью malloc()
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). И когда я пытаюсь получить доступ к массиву позже в коде, программа просто сработает.
Все ответы благодарны в продвинутом режиме.
EDIT: Забыл включить. Я разработал, где происходит сбой программы. Это происходит, когда я пытаюсь присвоить значение одному из BYTES в конце массива.
Почему не 'массив = таНос (высота * ширина * канал * SizeOf (BYTE))'? –
Это был мой оригинальный код, но у него тоже была такая же проблема. Кроме того, он не определяет, сколько строк, столбцов и (что бы ни называли 3-е измерение)? – user3039913
Это зависит от того, как вы получаете доступ к элементам. 'array [0] [0] [0]' например. –