小编kar*_*lis的帖子

我应该删除函数中的本地指针吗?(C++)

一个问题:

我应该删除在函数中获取的指针(未创建,只是获取)?例:

#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)中的东西我就不用担心了,但我对它的工作方式更加好奇.不会删除指针会产生内存泄漏情况,还是删除指针会将其从内存中删除,以便它将在其他范围(实例对象以及可能使用的任何其他位置)中消失?

有什么想法吗?

干杯.

c++ pointers

6
推荐指数
1
解决办法
5353
查看次数

标签 统计

c++ ×1

pointers ×1