不执行的行的更改会破坏构建!

bra*_*tao 0 c++ crash mfc visual-studio

我有一个实现提供文件共享功能的库的工作.

这已经发生了两次:

首先,在if-else路径中的字符串中,只执行if路径,但是当我在else路径中更改拼写时,几分钟后软件在std库中崩溃.我通过附带的调试进行了验证,发现内衬的更改从未被触及过.当我扭转这种变化时,它再次运作良好.

其次,我的软件再次在std库上崩溃,out-of-array检查标准的basic_string析构函数.

我做了一切,所有图书馆都匹配了_HAS_ITERATOR_DEBUGGING.

4个小时后,我发现有问题的文件是TorrentFile.cpp/h.

如果我添加一个函数(即使它从未被调用过),程序会在该文件的末尾崩溃,但如果没有,则没有错误.导致问题的代码:

std::vector<TorrentFileListPacket> TorrentFile::GetFileMap()
{
    std::vector<TorrentFileListPacket> vFiles;
    return vFiles;
};
Run Code Online (Sandbox Code Playgroud)

如果我评论这个代码,崩溃就消失了.

这真让我抓狂!

我已经做了8年的开发人员,我以前从未见过这样的东西!

附加信息

我的内存没问题,我在Windows 7中使用Visual Studio 2010和SP1.该库libTorrent来自RasterBar,它链接到boost.该软件正在使用MFC.

Mar*_*k B 6

这在与崩溃所期望的完全不同的位置上会强烈地记忆内存.最有可能添加和删除函数的方式是改变内存布局,使内存损坏的效果立即可见.

你最好的希望就像Purify或Valgrind那样追捕它.