我们最近将我们的企业应用程序从 vs2015 升级到 vs2017。这需要相当多的升级:
Windows SDK到最新版到16299 最新的 C++ 运行时 2017 调试支持 其他
我们的应用程序有 3 层:C# UI 层、VC++\CLI 中间层和 C 系统层。
当发生以下任一情况时: -C层malloc内存,C++层free -C++ 中的 malloc,C 中的 free
我得到以下调试断言(仅在发布版本中!)
起初我们认为我们没有正确升级某些 Windows SDK,但事实并非如此(在我删除了除 16299 以外的所有 SDK 之后它仍然重现)。我们对调试支持和 C++ 运行时做了同样的事情。
出于某种原因,C 层和 C++ 层现在正在使用它们自己的堆。这在我们升级之前有效,我无法弄清楚发生了什么变化。
有什么想法吗? 谢谢
最佳答案
所以我们想通了。我的项目文件中存在一个错误,其中使用 Debug C-runtime-library 构建 Release(XML 节点是 DebugLibrary,而我们使用 MultiThreadedDebugDLL 而不是 MulthThreadedDLL)
关于c - 调试断言失败! VS 升级后堆指针无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48084042/