0

私はC ++を学んでいますが、リスト内の特定またはすべてのアイテムを適切に挿入および削除する方法が完全にはわかりません。これが私がやっていることです。

構造体

struct  _STRUCT_TYPE_
{
    int nReference
    char[128] strAddress
};

リストの定義

std::list<_STRUCT_TYPE_> m_ListExample

リストへの挿入

_STRUCT_TYPE_ pStruct;
pStruct.nReference = nVar1;
pStruct.strAddress = strVar2
m_ListExample.push_back(pStruct);

リストをクリアする

m_ListExample.clear();

私はすべて正しくやっていますか?もっと良いことができますか?興味がある。

4

1 に答える 1

0

std::list はスタックに割り当てられます。つまり、自動的にクリアされます。

もしあなたが持っていたら

int x;

スタックが割り当てられているため、できることはあまりありませんが、

int* x = new int;

また

int* x = malloc(sizeof(int));

あなたは電話に直面するだろう

delete x;

また

free(x);

スタック割り当ては一般的に高速ですが、リストがヒープに割り当てられるようにコードを変更し、メモリの割り当てが確実に解除されるようにする場合は、次のようにします。

struct  _STRUCT_TYPE_
{
    int nReference
    char[128] strAddress
};

std::list<_STRUCT_TYPE_>* m_ListExample;

int main()
{
    _STRUCT_TYPE_ pStruct;
    pStruct.nReference = nVar1;
    pStruct.strAddress = strVar2
    m_ListExample->push_back(pStruct);

    //when done
    m_ListExample->clear();
    delete m_ListExample;

    return 0;
}
于 2013-07-10T20:54:48.203 に答える