我在代码中使用 malloc 进行内存分配,如下所示:
a*aobj= malloc(sizeof(a)* (unsigned long) n*n);
if(aobj== NULL){
printf("Error. Allocation was unsuccessful. \n");
return 1;
}
a 是一个存储三个表结果的结构。当我运行 n>30000 条记录时,它失败并给出提供的错误消息。即使在类型转换之后,它也不起作用。我如何修改以运行它以获得更多记录?
最佳答案
假设您的结构体的大小为 16 字节,那么您尝试分配:
16 × 30000 × 30000 字节 = 14,400,000,000 字节 = 14.4 GB
这可能超过了您计算机的可用主内存。所以它失败了,因为你试图分配太大的内存块。
关于c - 当记录增加时 Malloc 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53247836/