栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Linux乐观的malloc:当内存不足时,new总是会抛出吗?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Linux乐观的malloc:当内存不足时,new总是会抛出吗?

这取决于; 您可以使用vm.overcommit_memory
配置内核的过量使用设置。

赫伯·萨特(Herb
Sutter)几年前讨论了这种行为实际上是如何不符合C
++标准的

“在某些操作系统上,尤其是Linux,内存分配总是会成功。停止。即使在请求的内存确实不可用的情况下,分配也总是能够成功吗?原因是分配本身仅记录了对内存的请求;内存分配只是记录了对内存的请求。因此,在实际使用内存之前,(物理或虚拟)内存不会真正通过实际的后备存储提交给请求过程。

“请注意,如果new直接使用操作系统的功能,那么new总是会成功,但是以后任何无辜的代码(例如buf [100]
=’c’;都可能抛出,失败或停止。从标准C 的角度来看,这两种效果都一样)是不符合标准的,因为C
标准要求如果new无法提交足够的内存,它必须失败(这不会失败),并且buf [100] =’c’之类的代码不应引发异常或否则失败(这威力)。”



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/394195.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号