c/objective c中的数组指针

Bo *_*o E 2 c xcode objective-c multidimensional-array

我在c/objective c中的数组指针有问题.当我执行我的代码时,我得到一个BAD ACCESS错误消息.我确定了崩溃应用程序的声明:

unsigned char *image[640][480][4];
Run Code Online (Sandbox Code Playgroud)

如果我将语句更改为:

unsigned char *image[640][10][4];
Run Code Online (Sandbox Code Playgroud)

该程序不会崩溃.

此声明也会崩溃应用程序:

unsigned char *bla[1000][180];
Run Code Online (Sandbox Code Playgroud)

知道数组大小导致崩溃的原因吗?这只是数组指针的声明.

我正在使用IOS 5目标运行Xcode 4.2.1.

zne*_*eak 6

iOS的主线程堆栈最多可以容纳1MB,但你的阵列是640*480*4*sizeof(unsigned char*)字节,这是4.68MB的粗糙.因此,这种分配在主线程上不能成功.您应该使用动态分配,它将使用堆中的内存.

如果您真正想要的是image指向三维数组的指针,我建议您使用a typedef来使其更易于阅读:

typedef unsigned char image_array[640][480][4];
image_array* pointer = ...; // pointer to 640 * 480 * 4 unsigned chars
Run Code Online (Sandbox Code Playgroud)