在调用malloc之后,其返回值为NULL,按照道理应该退出这个函数,如果不退出,怎么让他正确执行? 返回NULL说明内存不够,为了成功执行,难道我应该写一个while循环一直申请吗?请结合c语言。 c/c++系统里面,凡是申请过的,都是有用的,内存也应该是及时释放,不是mallocnew失败再释放。 malloc失败的原因一般是可能为内存不足,但通常来说不会去“尝试释放自己申请过的内存”,因为就算你释放了,也不一定是百分之百就能malloc成功,万一是其他程序malloc内存太多,或者是系统原因。“尝试释放自己申请过的内存”这方法不可取。 “while循环一直申请”也不可取,首先while会占用资源,就算是sleep while,也不可取。因为c写的系统一般是实时性的,大部分不能及时处理就代表失败。一般的执行结果是,malloc失败会导致当前整个分支的业务流程失败。 举个例子: 一个新客户端连接上来,需要一块缓冲区,但是malloc失败,通常的处理是malloc失败导致init_conn()函数返回error了,所以下面就应该断开这个连接,并且保存日志,表明是malloc失败导致。 或者有一些极致的业务处理,通常在malloc失败之后会保存一些信息再去处理其他,比如把必要的保存为文件。
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/62996.html