gpt4 book ai didi

c - 什么情况下malloc可以返回NULL?

转载 作者:太空狗 更新时间:2023-10-29 16:23:16 24 4
gpt4 key购买 nike

这在我身上从未发生过,我已经编程多年了。

谁能给我一个重要程序的例子,其中 malloc 实际上不起作用?

我不是在谈论内存耗尽:我正在寻找一种简单的情况,当您在用户给定的边界大小中仅分配一个内存块时,假设是一个整数,原因malloc 失败。

最佳答案

你需要在嵌入式系统中做一些工作,你会经常在那里返回 NULL :-)

在现代海量地址空间和后备存储系统中内存不足的情况要困难得多,但在处理大量数据的应用程序(例如 GIS 或内存数据库)或错误代码导致内存泄漏的地方。

但您以前是否从未经历过它真的并不重要 - 标准说它可能会发生,所以您应该迎合它。在过去的几十年里,我也没有被车撞过,但这并不意味着我在马路上闲逛而不先看一眼。

然后重新编辑:

I'm not talking about memory exhaustion, ...

内存耗尽的定义malloc 没有给您所需的空间。这是否是由于分配所有可用内存或堆碎片导致的,这意味着即使内存区域中所有空闲 block 的总和更高,您也无法获得连续的 block ,或者人为地限制您的地址空间使用,例如使用符合标准的功能:

void *malloc (size_t sz) { return NULL; }

C 标准不区分失败的模式,只区分成功或失败。

关于c - 什么情况下malloc可以返回NULL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9101597/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com