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