【发布时间】:2020-01-21 22:55:31
【问题描述】:
当堆内存不足或堆超级碎片时,Malloc 会返回 null。
我想知道的是,如果有其他情况 malloc() 返回 NULL?
PS:Under what circumstances can malloc return NULL? 似乎没有回答我的问题
【问题讨论】:
-
可能当你传递 0 的大小时。
-
我看到它可能会返回 null 或实际地址(基于其他回答提到的 cmets)
-
不清楚你的问题是什么。
malloc()要么返回有效指针,要么返回 NULL。如果它返回 NULL,你的程序需要做一些适当的事情,比如打印错误信息并退出。 -
有很多很多很多的系统和实现。从链接中,第二个答案说:
the very definition of memory exhaustion is malloc not giving you the desired space。没有内存时,Malloc 返回 NULL。您现在可以推理 为什么 没有内存 - 因为它“超级碎片化”或者它太小,或者出于任何其他原因(并且有很多原因),然后指定 malloc 的实现和操作您完全想到的系统。因为现在我认为这个问题太宽泛了。 -
我明白了,我被否决的原因是内存不足的原因太多了。