首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >静态成员回收内存并从异常恢复

静态成员回收内存并从异常恢复
EN

Stack Overflow用户
提问于 2011-10-20 08:39:13
回答 4查看 386关注 0票数 1

这是我的作业问题

用自己的运算符new创建一个类。这个操作符应该分配5个对象,在第5个“内存耗尽”时抛出一个异常。还添加一个静态成员函数来回收这个内存。现在用try块和catch子句创建main ()来调用内存恢复例程。将它们放入一个while循环中,以演示如何从异常恢复并继续执行。

现在我不想要这个节目,但我对这个问题很困惑。我可以处理新的操作符重载,但按照要求,我应该创建一个静态成员"release()“。如果我必须在捕获中恢复,我如何恢复?我的意思是我应该删除什么对象。或者我发布()的原型是错误的?

编辑:

另外,如果我必须删除,那么我可以删除这5个对象中的哪个?删除任何对象实际上都是不正确的。我看不出恢复的路。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-10-20 08:46:35

听起来,您需要类似于类中地址的静态列表。每当调用new时,您都会将内存块的地址存储在该列表中。然后,在发布方法中,遍历静态列表,释放内存并抛出异常。

票数 1
EN

Stack Overflow用户

发布于 2011-10-20 08:42:32

这是个奇怪的任务。如果我对此有正确的理解,您必须将在您的operator new中创建的对象的地址存储在release()-function可以找到的地方。

票数 0
EN

Stack Overflow用户

发布于 2011-10-20 08:47:36

我对这个问题的解释是,类中new操作符的实现应该跟踪获得的内存,以便您的release方法(我将使用相同的签名)可以收回内存。

这种方法在某些代垃圾收集器中使用,在每一代内存从池中获取期间,一旦生成执行完成一个单独的调用,将释放所有内存,避免碎片化和管理空闲列表的成本(分配程序可以在池中提供越来越多的地址)--注意,这种特定类型的池可能是有效的,但它的使用仅限于POD类型。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7833196

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档