一个问题:
我应该删除在函数中获取的指针(不是创建的,只是获取的)吗?例子:
#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;
};
aObj 将在其他情况下以及在 SomeObject 实例中重用。我可以继续并总是调用SomeObject::getInstance()->getAObjPointer()
我需要的一切,但SomeObject::getInstance()->getAObjPointer()->GetSomeIntValue()
不像aObj->GetSomeIntValue()
我个人认为的那样可读。我知道如果我使用 boost 中的某些东西(shared_ptr、weak_ptr 甚至 auto_ptr),我不必担心,但我对它的工作方式更加好奇。不会删除指针会造成内存泄漏情况,还是删除指针会从内存中删除它,以便它将在其他范围内消失(实例对象以及它可能被使用的任何其他地方)?
有什么想法吗?
干杯。