所以我将直接切入正题:我是加入一些东西(这恰好是一个类)到另一个类的函数:C++内存泄漏的函数参数
tower->set_weapon(new NoWeapon());
的set_weapon()是塔类中的一个简单方法,它将一个内部变量与它接收的这个新的NoWeapon类相关联。
virtual void set_weapon(Weapon* weapon){ weapon_ = weapon; };
weapon_是Weapon类的指针,NoWeapon是武器的子级。当一切都说完了,塔本身清理一切:
weapon_->Clean();
delete weapon_;
但是,我仍然得到内存泄漏。即时通讯使用的VisualStudio上2013 VLD,它检测到我提到
tower->set_weapon(new NoWeapon());
任何想法,为什么这种情况正在发生和我怎么能解决它的第一行中的内存泄漏?
预先感谢您!
编辑:感谢YSC的解决方案。事实上,我没有初始化原始武器指针,但是你的想法让我回到了正轨。
至于unique_ptr的想法,我以前玩过,但它不是我寻找的解决方案。还是要谢谢你的帮助。
为noWeapon和武器提供的定义。 – ForeverStudent
也许你不止一次地调用了set_weapon(),这里的代码忘了为这种情况处置先前的武器。 – nos
只是猜测给定的代码量,但如果你两次调用'set_weapon',就会发生这种情况;第一件武器永远不会被删除。 – dfan