在vs2008中升级后检测到HEAP CORRUPTION

时间:2012-07-11 07:22:57

标签: c++ visual-studio-2008 visual-c++ dll

我有一个用vc ++构建的项目6.现在我将它升级到vs2008并且它现在构建完美但是当我从调试文件夹打开它时它也打开但不执行因为相关的dll不在那里。

现在我将exe复制到另一个文件夹和相关的dll中,然后尝试打开弹出框。enter image description here

现在我脑子里有两个问题 -

  1. 是否有任何文件损坏。
  2. 我的dll是vc ++ 6环境下的构建。我应该升级dll。
  3. 可能还有另一个问题。 请提出建议!

2 个答案:

答案 0 :(得分:2)

  • 在Visual C ++ 2008中构建所有项目和解决方案,并仔细删除所有更高级别警告(至少级别1和级别2)。
  • 从调试器运行程序(在调试模式下 - 即 F5 ,而不是 Ctrl + F5
  • 仅运行Debug构建。这也只有32位,你可以编辑并继续。为此,您必须启用/DEBUG链接器选项
  • 尝试缩小问题范围。逐步调试并查看失败的位置。如果断言,它,不错!查看调用堆栈并找到原因。
  • 不要忽略异常,或将它们隐藏在try-catch块中。

答案 1 :(得分:1)

遵守规则: 应在同一模块中分配和释放内存。也就是说,不要在dll中分配并在exes中释放,反之亦然。

您应该检查项目正在使用哪个crt。不同的CRT以不同的方式分配内存,并且在进行过程中将完成许多额外的工作。

见:Do (statically linked) DLLs use a different heap than the main program?

也许你应该最终重建你的代码。