VS 2012中可以改变什么来打破我的C ++应用程序? [英] What could've changed in VS 2012 to break my C++ application?

查看:175
本文介绍了VS 2012中可以改变什么来打破我的C ++应用程序?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个C ++应用程序,当我将平台工具集设置为VS 2012(v110)和VS 2013时,它会工作,但如果我的目标VS2012与Windows XP支持。如果我瞄准VS2008或VS2010,它工作正常。我只有一个问题,当运行应用程序没有连接调试器,并在释放模式下编译。

I have a C++ application that breaks when I set the Platform Toolset to VS 2012(v110) and VS 2013. It works however if I target VS2012 with Windows XP support. If I target VS2008 or VS2010, it works fine. I only have a problem when running the application without a debugger attached, and compiled in release mode.

我试图分析发生了什么,但我似乎正在得到那些特殊的不可能的错误造成的某种内存破坏错误。

I've tried to analyze what happened, but I seem to be getting those special "impossible" errors caused by some kind of memory corruption bug.

我可以想到的唯一特殊的事情是,我也在这个应用程序中使用一个库。这个库有它的平台工具集设置为VS 2010.即使库是在调试模式下构建的应用程序仍将崩溃。此外,库和应用程序都是32位的应用程序。

The only special thing I can think of is that I also use a library in this application. This library has it's platform toolset set to VS 2010. The application will still crash even if the library is built in debug mode. Also, both the library and application are 32bit applications.

我应该从哪里开始寻找为什么我的应用程式被打破?应用程序本身很简单,我看不到立即未定义的行为。

Where should I start looking for why my app is broken? The application itself is quite simple and I see no immediate undefined behavior. However, the library is another story and is quite complex and involved, so I need pointers as to what to look for.

推荐答案

图书馆是另一个故事,相当复杂和涉及,所以我需要指针。可能你有一个堆损坏错误,由容错堆修复,新的编译器将可执行文件标记为不需要容错堆。

Possibly you have a heap corruption bug that is being "fixed" by the fault tolerant heap and the new compiler tags the executable as not needing the fault tolerant heap.

这篇关于VS 2012中可以改变什么来打破我的C ++应用程序?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆