一个问题:
我应该删除在函数中获取的指针(未创建,只是获取)?例:
#include <SomeObject>
#define SAFE_DELETE(p) { if (p) { delete (p); (p) = NULL; } }
class DraftObject
{
public:
DraftObject() : _x(0) {}
~DraftObject(){}
int CalculateSomething()
{
AnotherObject* aObj = SomeObject::getInstance()->getAObjPointer();
/* Do some calculations and etc... */
_x += aObj->GetSomeIntValue();
SAFE_DELETE(aObj) // <-- Would you recomend this here?
return _x;
}
protected:
int _x;
};
Run Code Online (Sandbox Code Playgroud)
在其他情况下,aObj也将在SomeObject实例中重用.我可以继续并且总是呼唤SomeObject::getInstance()->getAObjPointer()我需要的一切,但SomeObject::getInstance()->getAObjPointer()->GetSomeIntValue()不像aObj->GetSomeIntValue()我个人认为那样可读.我知道如果我使用了boost(shared_ptr,weak_ptr甚至auto_ptr)中的东西我就不用担心了,但我对它的工作方式更加好奇.不会删除指针会产生内存泄漏情况,还是删除指针会将其从内存中删除,以便它将在其他范围(实例对象以及可能使用的任何其他位置)中消失?
有什么想法吗?
干杯.