gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 15:27:27 25 4
gpt4 key购买 nike

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

这已经发生了两次:

首先,在 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;
};

如果我注释掉这段代码,崩溃就消失了。

这真让我发疯!

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

附加信息

我的内存还好,我在 Windows 7 中使用带有 SP1 的 Visual Studio 2010。该库是来自 RasterBar 的 libTorrent,它链接到 boost。该软件使用MFC。

最佳答案

这在与您预期的崩溃位置完全不同的地方闻起来有强烈的内存损坏气味。最有可能的添加和删除功能正在改变内存布局,导致内存损坏的影响立即可见或不可见。

您最好的希望是使用 Purify 或 Valgrind 之类的东西来追捕它。

关于c++ - 不会执行的行的更改会破坏构建!,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5279822/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com