【发布时间】:2012-01-05 14:08:47
【问题描述】:
实例化:
weapons.push_back(new Pistol());
weapons.push_back(new Rifle());
weapons.push_back(new Shotgun());
析构函数,当第一次删除发生时,代码中断。当我关闭程序时会发生这种情况。
Brain::~Brain()
{
for (unsigned int i = 0; i < weapons.size(); i++)
{
delete weapons[i]; // this is where the code breaks
}
}
我收到警告:
Unhandled exception at 0x0096371f in D3D10DEMO.exe: 0xC0000005: Access violation reading location 0x000002ce.
武器是这样的:
weapons(vector<Gun*>())
编辑 - 我已经从这个问题中删除了大部分代码,但我也削减了我的程序,以便在此处以更小的解决方案重现问题:
【问题讨论】:
-
我们需要
Brain的定义。 -
过去的批评不是你没有提供你所拥有的一切,而是你没有以简洁和独立的方式提出问题。还是不行……
-
一个 23,813,003 字节的压缩包?我们需要的文件:
h、cpp、sln、vproj、vcxproj.*和suo。我们不需要的文件:ipch、lastbuildstate、manifest、obj、pdb、sdf、log、tlog、idb。删除这些会减少到 67,724 字节。更易于管理。下载速度也快了 351 倍。