在http://www.cplusplus.com/reference/list/list/erase/的描述中,我得到
This effectively reduces the container size by the number of elements removed,
which are destroyed.
pop 方法的类似描述。
但是在我对 VS2012 的测试中,删除的项目没有被破坏。我对此感到困惑。
这是我的测试代码。我仍然可以从 std::list 擦除的内存中输出,我认为这是错误的。
#include <stdio.h>
#include <list>
using namespace std;
class test
{
public:
int a;
test() {a = 111;}
};
int main(void)
{
list<test*> l;
test* t = new test;
l.push_back(t);
l.erase(l.begin());
printf("%d\n", t->a);
return 0;
}