c语言malloc失败后,malloc失败后如何处理?

当C语言中的malloc函数申请内存失败返回NULL时,通常有三种处理方式:使用exit函数优雅退出程序,尝试释放内存后重新申请,或者避免忙等待并重新尝试。在多线程环境下,malloc失败后的重试可能因其他线程释放内存而成功,但这种设计应谨慎使用。malloc的失败可能涉及到复杂的内存管理过程,如页面交换。预先分配的'rainy-day fund'内存可以在malloc失败时用于优雅地报告问题并退出。
摘要由CSDN通过智能技术生成

malloc在C语言中用来申请内存,这是非常重要的操作,但是如果失败,怎么处理呢?

一般C语言代码,在malloc之后,都要立刻判断指针是否为NULL,如果为NULL,就是申请内存失败了。

失败后:

1, 用exit函数(stdlib.h中定义)退出程序,退出前用fprintf往stderr写的内容;

2, 想办法free一些其它没用的内容,然后重新malloc;

3, 尽量避免 busy loop waiting and trying, 除非你知道自己的做什么。

下面是stackoverflow中一个人的回答:

In general, a modern malloc() implementation will return NULL only as an absolute last resort, and trying again will definitely not help. The only thing that will help is freeing some memory and then trying again. If your application holds any expendable resources, this would be the time to free them, and then give it another shot.

In some environments, a useful practice is to allocate a small amount of memory as a rainy-day fund. If malloc() ever does return NULL, you can free that rainy-day fund, and

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值