我有一个班级:
class temp
{
public:
int id;
};
每当我们收到用户的命令时,我都会使用temp *obj = new temp();
为这个类创建对象。命令是字符串形式,由我们将附加到obj->id
的id组成。我也有一个存储临时类对象的数组:
temp* array[30];
如果我收到用户的删除命令,我想删除此对象。我怎么能删除它?如果我收到用户的删除命令,是否足以执行delete obj
?
答案 0 :(得分:2)
这取决于您访问和使用对象的方式。您应该通过在为“new”分配的对象的内存上调用“delete”来自行清理,但是只有在完成对象完成后才能这样做。
您还必须清理对您创建的对象的引用。
例如,如果要动态分配和删除对象并继续使用temp * array [30],则需要确保永远不要取消引用array [n]中指向已删除对象的指针。
因此删除对象通常是不够的;您还必须删除对该对象的所有引用,或确保它们永远不会被调用。
标准模板对于这种内存管理比原始数组更有用。