何时从数组删除类指针

When to delete class pointer from array

本文关键字:指针 删除 数组 何时      更新时间:2023-10-16

我有指针 object *lst[200];

的列表

我用它来添加一个:

object a = new object();
a->id = current_amount;
lst[current_amount] = a;
current_amount++;

现在我要添加一个函数删除:

我只想从数组中删除此元素:(我存储一个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?上面的代码根本无法释放内存...

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
    }

由于上面的代码不是C ,这是:

std::list<std::unique_ptr<object>> lst;

和方法erasepush_backpush_front