Если вы хотите объявить image
как указатель на массив , а не как массив указателей , то вы должны объявить его так::
unsigned char (*image)[480][4];
Вы не указываете первое измерение массива, потому что именно на этот указатель указывает первый элемент в массиве.*
по существу заменяет [640]
.
Тогда, например, если у вас есть массив unsigned char test[640][480][4]
(при условии, что это не произойдет сбой), ваш код будет просто:
unsigned char test[640][480][4];
unsigned char (*image)[480][4] = test;
Ваш код объявляет многомерный массив char*
с, тогда как этот код объявляет указатель на многомерный массив char
с.
Причина, по которойизменение 480
на 10
может остановить сбой кода, потому что вы, скорее всего, пытаетесь использовать больше места, чем то, что доступно в стеке, путем создания фактического массива такого большого размера, а не указателя наодин.