c - 奇怪的 malloc 访问错误

标签 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;
}

最佳答案

第一个 malloc 应该是

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

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

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

避免此类错误。

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

关于c - 奇怪的 malloc 访问错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18272853/

相关文章:

c - malloc 上已释放对象的校验和不正确

c - 在C中将数组存储在另一个数组(3D数组)中

ios - objc_retain EXC_BAD_ACCESS

objective-c - 尝试使用 %@ 构建字符串时的 EXC_BAD_ACCESS

c - 在标准 C 中(不是 C99)在运行时声明数组的大小

c - 结构体指针数组 [C++]

c - 读取 csv 到结构

c - 数据类型大小是否因计算机而异?

c - 编译驱动程序时出错 - 初始化程序中指定的未知字段

iphone - PSTCollectionView 因 EXC_BAD_ACCESS 崩溃