c - 当记录增加时 Malloc 失败

标签 c pointers malloc

我在代码中使用 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/

相关文章:

c - 如何在 gcc 中使用断线 (¦)?

直接从 typedef 结构定义创建指针

C - 释放指向指针的指针

c - malloc + size_t * 3 的地址是否为任何类型对齐?

c - 结构成员的嵌套循环赋值

将 libcurl 中的 HTML 与文件中的文本进行比较

c - 不同源文件中的重复结构定义

c - 反转字符串的库函数

c - free() 使用不同的指针释放相同的堆内存

使用 C 创建列表和结构数组