奇怪的malloc访问不好

时间:2013-08-16 12:00:20

标签: c malloc exc-bad-access

我在使用Xcode

中的malloc分配内存时遇到了问题

当我使用较小的Block_size(256)代码没有问题 如果我使用更大的Block_size(65536),Xcode将停在“state1 [t] =(int *)malloc(sizeof(int)* 4);”并告诉我BAD_ACCESS。如何解决这个问题?

谢谢

int main(int argc, const char * argv[]) {
     // insert code here...
    int **state1;
    int t = 0;
    int Block_size = 65535;
    state1 = (int **)malloc(sizeof(int) * Block_size);
    printf("%d",Block_size);
    for (t=0 ; t < Block_size-1 ; t++) {
        state1[t] = (int*) malloc(sizeof(int) * 4);
    }
    printf("end");
    return 0;
}

1 个答案:

答案 0 :(得分:0)

第一个malloc应该是

state1 = malloc(sizeof(int *) * Block_size);

因为你分配了一个指针数组。在64位平台上,这有所不同! 有些人喜欢写

state1 = malloc(sizeof(*state1) * Block_size);

避免这种错误。

备注:在C中,您无需转换malloc()的返回值。