何时从数组中删除类指针

时间:2012-11-01 16:10:31

标签: c++ class delete-operator

我有一个指针列表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?上面的代码根本没有释放内存......

2 个答案:

答案 0 :(得分:0)

由于上面的代码不是C ++,这里有一些是:

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

以及方法erasepush_backpush_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

    }