我有一个指针列表object *lst[200];
我用它来添加一个:
object a = new object();
a->id = current_amount;
lst[current_amount] = a;
current_amount++;
现在我想添加一个函数delete it:
我只是想从数组中删除这个元素:(我存储一个id用它来删除它)
void delete(object *elem)
{
if(!elem)
return;
for (int i = elem->id ; i < current_amount - 1;i++)
{
lst[i] = lst[i + 1];
}
}
问题:何时致电delete elem
?上面的代码根本没有释放内存......
答案 0 :(得分:0)
由于上面的代码不是C ++,这里有一些是:
std::list<std::unique_ptr<object>> lst;
以及方法erase
,push_back
,push_front
。
答案 1 :(得分:0)
void deleteElem(object *elem) // you can't call your function 'delete'
{
if(!elem)
return;
for (int i = elem->id ; i < current_amount - 1;i++)
{
lst[i] = lst[i + 1];
}
delete elem; // this free's the memory
}