这不是问题,只是我想回答的一个问题。内存释放冻结了我的程序
我正在制作具有粒子的2D应用程序。在单击处理我已经写了这个代码:
Particle *tempp = new Particle();
tempp->setPosition(mx, my);
particles.push_back(tempp); // typeof particles = std::list<Particle*>
delete tempp; // <- this line is the problem
当我点击,一个粒子将在鼠标的位置创建。大约一秒后,它应该消失,这工作正常。消失后,我可以再次点击创建一个新的粒子。
但是,当我点击屏幕上仍然有一个粒子时,我的程序冻结并停止工作。
我析构函数Particle
类和它的母公司析构函数都是空的。
没有调用delete
我的程序运行良好,即使有多个粒子一次,甚至每帧多个。我只是想知道是什么导致这个冻结的问题。
您正在添加一个指向temppp的指针 - 在tempp被删除后它指向什么? – Mark 2013-05-09 15:03:04
为什么你将Tempp推入列表中,然后将它删除后?你的列表包含垃圾指针,任何尝试访问它们都可能导致你的程序崩溃。 – 2013-05-09 15:04:14
那么在方法结束后,tempp指针仍然存在?如果我删除它,内存将被覆盖? – Broxzier 2013-05-09 15:23:24