的pop_front()函数是否把元素空间给回收了?
小弟不才,只是个小白,很多知识面有缺陷。
今天用Qt写操作系统处理机调度的时候,设了一个的指针指向链表队首元素,之后该元素被pop_front(),按照我的理解,元素被移除,该元素只是跟链表没关系了,但是空间还没有被回收,但是事实是元素被pop_front()后该指针就出错了(运行时崩溃),我注释掉pop_front()那行后,指针能正常使用。
不知道是什么问题,去c-free上想要验证一下,pop_front()有和没有都能正常运行,我也迷糊了,到底是怎么回事?以下是c-free上测试的代码:
#include<list>
#include<iostream>
using namespace std;
class A
{
public:
int data;
A(int x):data(x){}
};
int main()
{
list<A> l;
A a(5);
l.push_back(a);
A* pa = &a;
l.pop_front();
cout<<pa->data<<endl;
return 0;
}