如果malloc返回NULL该怎么办?

时间:2015-12-08 20:51:57

标签: c pointers memory-management

在我的程序中我处理大量数据。我使用malloc()函数为我的大型数组分配内存。在我分配内存后,我检查指针是否为NULL(这是因为没有那么大的内存空间或者我不知道为什么)。

但有时候我的指针是NULL。那现在该怎么办?我做了一个循环,如果指针为NULL,它会尝试一次又一次地分配它。但它变成了一个无限循环,它仍然说,指针是NULL。那么如果它不想要如何分配内存呢?

感谢您的回复。

3 个答案:

答案 0 :(得分:3)

这取决于您尝试分配的内存的重要性:

  • 如果程序在没有它的情况下无法运行,只需记录错误并关闭;
  • 如果程序可以在没有它的情况下运行,并且如果在降级模式下运行是有意义的,请记录错误,放弃处理并继续希望最好。

答案 1 :(得分:3)

如果malloc失败,那么您的可用内存已用完。 使用相同的请求大小再次调用它是没有意义的。在您使用free释放一些已分配的内存之前,它将继续失败。

答案 2 :(得分:1)

如果您正在处理内存有限的嵌入式系统,那么很有可能malloc()返回NULL,因为您尝试请求的内存多于它的空闲(在一个连续的块中)。在不知道更多实现细节或malloc()请求的大小的情况下,我无法推测这是为什么。

但是,它确实指出您必须了解解决方案的内存利用率,以便您可以确定在哪里使用的内存,并确定如何释放可能正在使用的内存,或者你必须转向具有更多系统内存的系统设计。

相关问题