【发布时间】:2012-12-30 14:27:21
【问题描述】:
我想在指针引用的结构中返回一些材料,然后删除该结构。
在Java中,只要返回值,垃圾回收系统就会自动删除该结构。
但是在 C++ 中,我能想象的方式不是很干净,使用临时变量来存储要返回的东西,删除指针然后返回存储的值。
我尝试了另一种棘手的方法,使用逗号表达式作为“return ptr->value, delete ptr”,但是有一个编译错误说“void value not ignored as it hould be”。
有什么方法可以更优雅地实现这一点吗?
非常感谢。
更新
非常感谢大家的建议。事实上,我的问题的最初动机是关于我想用于一些较短代码的逗号表达式。而且我发现讨论更多的是关于 C++ 中指针的使用。这也是另一个非常有趣的话题。
我使用 C 多年,所以我对原始指针比较熟悉,而对智能指针的经验很少。在我的第一个想法中,我们需要指针有两个基本条件。一个是引用在堆中分配的一大块内存,另一个是动态分配,例如链接列表节点或树节点(例如,我最初的问题是在编写类似 BST 的结构时出现的)。
那么在 C++ 编程中,智能指针是两种情况的最佳选择吗?如果我们考虑效率,例如在一些低级库上工作,是否可以将原始指针完全封装在类中以减少内存泄漏风险?再次感谢。
【问题讨论】: