1

我在 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;
}
4

1 回答 1

1

第一个 malloc 应该是

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

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

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

以避免这种错误。

备注:在 C 语言中,您不需要强制转换 的返回值malloc()

于 2013-08-16T12:21:34.857 回答