我看到了类似下面的代码,但是我没有看到任何删除语句,是否存在任何内存泄漏问题?
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_ptr
或std::shared_ptr
。
关于c++ - 无需删除vector <StructA *>中的结构内存?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17639472/