0

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

4

2 回答 2

0

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

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

和方法erase, push_back, push_front.

于 2012-11-01T16:12:48.280 回答
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

    }
于 2012-11-01T16:15:43.787 回答