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.
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)