c - 调试断言失败! VS 升级后堆指针无效

标签 c visual-c++ malloc heap-memory free

我们最近将我们的企业应用程序从 vs2015 升级到 vs2017。这需要相当多的升级:

Windows SDK到最新版到16299 最新的 C++ 运行时 2017 调试支持 其他

我们的应用程序有 3 层:C# UI 层、VC++\CLI 中间层和 C 系统层。

当发生以下任一情况时: -C层malloc内存,C++层free -C++ 中的 malloc,C 中的 free

我得到以下调试断言(仅在发布版本中!)

Debug assertion failure

起初我们认为我们没有正确升级某些 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/

相关文章:

c - (C, pthreads) 让多个线程同步并一起继续

C++ 在堆上分配相同类型的变量会花费非常不同的时间

C malloc错误释放结构

visual-c++ - InnoSetup 脚本安装 VC 可再发行组件并注册 VC OCX 导致 "RegSrv32 failed with exit code 0x1"

c - 当我唯一关心的是大小时,使用全局变量而不是 malloc() 是否有缺点?

c - 如何重建给定的 malloc 序列?

c - 使用 OpenMP 和 C 的并行化功能

c - C 和 OpenMP 中的嵌套循环优化

c++ - 原始图像和 C++ 中的 DCRaw

C++ 11 正则表达式堆栈溢出/VS2012