我看到了类似下面的代码,但是我没有看到任何删除语句,是否存在任何内存泄漏问题?

struct RStatus
{
    int fid;
    int status;
};

void Foo()
{
    vector<RStatus*> rsVec;

    RStatus* rs = null;
    rs = new RStatus(); // memory allocated here!
    rs->fid = 0
    rs->status = 0;
    rsVec.push_back(rs);

}

最佳答案

如果使用vector<RStatus*>,则必须使用delete,否则会发生内存泄漏。

但是,如果使用vector<RStatus>,则不必使用delete -建议1。


1.如果要使用指针,则建议您应该使用智能指针,例如std::unique_ptrstd::shared_ptr

关于c++ - 无需删除vector <StructA *>中的结构内存?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17639472/

10-09 13:16