是的,您应该释放分配的内存:
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);
// free :
unsigned int size = rsVec.size();
for (unsigned int i = 0; i < size; i++ )
delete rsVec[i]; // delete because you used new
}
如果你不这样做,所有的内存将永远不会在向量销毁时被释放。
我建议你使用std::vector<RStatus>
而不是std::vector<RStatus*>
.
您也可以使用智能指针。你可以在这里找到一些关于它的文档:http ://www.cplusplus.com/reference/memory/shared_ptr/
编辑:正如评论中所建议的,如果在 处引发异常rsVec.push_back(rs)
,分配的内存将丢失,这就是为什么智能指针会是更好的解决方案。或者再次使用std::vector<RStatus>
。