這不是問題,只是我想回答的一個問題。內存釋放凍結了我的程序
我正在製作具有粒子的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