​ new delete失败时候的具体解决

​ new delete失败时候的具体解决

 new delete失败时候的具体解决办法感觉好像没有说? 对于每种类型都得搭建内存池?感觉这个部分没太懂,只是知道了new和delete的重载以及内存池的搭建 比如我一个类的初始化里面有很多的指针,都是各种类型的指针,在初始化的时候,我该如何解决这个问题?比如上头好几个new 下头也好几个不同的new 在中间挂了 我该怎么优雅的退出 把上面的delete掉 想知道一下怎么实现这个优雅的退出

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
quickzhao 2023-07-14 00:01:04

new和delete的定制过程已经说明了,operator new是允许失败的,C++标准的处理方法时抛出bad_alloc异常,而operator delete是不允许抛出异常的。delete可以结合异常展开和RAII的技术至少保证不会出现内存泄露的问题。解决new失败的问题是个更加系统的工程,可以使用内存池和智能指针,具体取决项目中的需求,工业界目前的做法是尽量不要直接用new。

  • 补充一点:关于内存池的使用,通常有两种做法:第一种是任何要求某大小的内存都请求到某个内存池里进行分配和释放;第二种做法是要求某个特定类型的对象的内存分配请求都到某一个内存池里分配和释放;我一般建议采用第二种,这也是课程中目前采用的方式,这样做的好处:1.把同一类型的对象放在一起,有更好的局限性,便于管理;2.通过对象类型可以得到对象的大小,但通过大小是无法获得对象类型的。至于具体采用哪种方式,要结合具体的工程代码场景。

    2023-07-14 10:55:34
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
C++中高级工程师
  • 参与学习       113    人

无论你在哪个C++领域,越早提升高阶能力,职业发展越好 以工程实践驱动教学,全方位提升“内功,思维,设计,技术”能力 简历指导+1V1答疑+直播答疑等专属服务保障,学习无忧

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师