我在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;
}
第一个malloc应该是
state1 = malloc(sizeof(int *) * Block_size);
因为您分配了指针的数组。在64位平台上,这会有所不同!有些人更喜欢写
state1 = malloc(sizeof(*state1) * Block_size);
以避免这种错误。
备注:在C中,不需要强制转换malloc()
的返回值。