0

ポインタのリストがあります object *lst[200];

これを使用して1つ追加します。

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_backpush_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 に答える