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 回答