我有一个自定义的异常类。 说类CustomExcep {};
我的应用程序是一个由C ++构成的中间件。它是一个Web服务,用于基于Java的Web前端和DCE后端之间的通信。
当DCE后端由于某些核心转储而未运行或停止时,应用程序将抛出CustomExcep。
就是这样。
CustomExcep * exc = new CustomExcep(); 扔掉;
我无法使用堆栈内存,因为它会导致一些运行时异常。
我需要一个解决方案来清除此CustomException使用的内存。 我们可以为此目的使用模板吗?
任何帮助将不胜感激。在此先感谢。
答案 0 :(得分:1)
使用static关键字预分配异常。
static const CustomExcep e;
throw e;
微软对“新”操作员的VC ++实现使用了这种技术。 通过使用static关键字,在整个应用程序生命周期中只会创建一个异常,然后在每次调用中重用。这样你就不用担心删除了。
在异常方面使用其他方法还有其他复杂因素,因为它们是如何在内部处理的。通常,应该避免使用新的例外情况。如果我有时间,我会回来再解释一下。
答案 1 :(得分:0)
当你发现异常时,你需要delete
它。
答案 2 :(得分:0)
你应该能够使用堆栈。如果你不是,那可能是你需要解决的真正问题。
我不建议在堆上创建异常。
答案 3 :(得分:0)
正如弗雷德里克所说,你应该选择基于堆栈的解决方案。如果您担心复制的成本(或副作用)而不担心分配失败,您可以在异常类中分配内存并将其存储在智能指针成员中,从而使复制成本低廉且无副作用的过程,你的记忆会自动释放。