在我的程序中我处理大量数据。我使用malloc()函数为我的大型数组分配内存。在我分配内存后,我检查指针是否为NULL(这是因为没有那么大的内存空间或者我不知道为什么)。
但有时候我的指针是NULL。那现在该怎么办?我做了一个循环,如果指针为NULL,它会尝试一次又一次地分配它。但它变成了一个无限循环,它仍然说,指针是NULL。那么如果它不想要如何分配内存呢?
感谢您的回复。
答案 0 :(得分:3)
这取决于您尝试分配的内存的重要性:
答案 1 :(得分:3)
如果malloc
失败,那么您的可用内存已用完。
使用相同的请求大小再次调用它是没有意义的。在您使用free
释放一些已分配的内存之前,它将继续失败。
答案 2 :(得分:1)
如果您正在处理内存有限的嵌入式系统,那么很有可能malloc()返回NULL,因为您尝试请求的内存多于它的空闲(在一个连续的块中)。在不知道更多实现细节或malloc()请求的大小的情况下,我无法推测这是为什么。
但是,它确实指出您必须了解解决方案的内存利用率,以便您可以确定在哪里使用的内存,并确定如何释放可能正在使用的内存,或者你必须转向具有更多系统内存的系统设计。