【发布时间】:2012-07-18 07:10:40
【问题描述】:
在 C++ 中,假设 Helper 类中有一个方法,它返回一个指向另一个对象的指针。除了方法签名和返回对象的类型外,我没有关于此方法的更多信息。这种情况下怎么做内存管理?
我尝试在下面使用智能指针作为这个功能:
void f() {
auto_ptr<SomeClass> p_someClass = p_Helper->getSomeclass();
p_someClass->doSomething();
}
一旦 f() 超出范围,分配给 p_someClass 的内存就会被释放。 但是,如果 getSomeclass() 不分配新内存而只是返回一个“单例”指针(并且 p_Helper 也是单例)怎么办?那么下一次调用 p_Helper->getSomeclass() 就会有麻烦了。
处理这个问题的常用方法是什么,尤其是当 Helper 类的文档很少时?
【问题讨论】:
-
除了请教作者、阅读文档或查看源代码之外别无他法。
-
Mb 函数返回对 auto_ptr 的引用,而不是对象?
-
如果它是一个单例,最好返回一个对对象的引用(或一个weak_ptr)以表明删除不是一个好主意。
标签: c++