在构造函数[C ]中的FP分配上崩溃

Crash on fp-assignment in constructor [C++]

本文关键字:FP 分配 崩溃 中的 构造函数      更新时间:2023-10-16

我在客户的计算机上有一个非常奇怪的'崩溃'。使用日志,我能够将其跟踪到此代码线:

myvar = 1;//此"崩溃"。Myvar被宣布为" double"

代码显然可以。但是Myvar是一堂课的成员变量。并且该变量有一个全局实例,并且代码线在构造函数中。因此,它已在main()之前执行。不好的风格,我知道...

我的问题: - 允许在main()之前使用float/double? - 我可以称呼某种" initfloatsystem()"功能?

更多信息: - 这是Win32/c - 没有崩溃消息,程序才关闭 - 尝试/捕获无济于事

我真的没有想法...

最后,最终找到了问题。这是Visual Studio 2012的问题。我在Microsoft网站上找到了不同的副作用:http://connect.microsoft.com/visalstudio/feedback/details/771122/floating-point-point-point-point-math-change-from-vs2008-to-vs2012-效果 - 现代代码,但不管理的代码

我的猜测是编译器现在使用默认的处理器功能,某些旧处理器上无法使用。使用此编译器选项神奇地修复了它:/ARCH:IA32

,除非您的二进制损坏,否则绝对不应导致简单的任务造成崩溃 - 除非您超载了分配运算符?

您很有可能破坏了堆,或者调用未定义的行为在某些地方以及您所追踪的内容只是此的副作用。

应用程序验证程序在窗口上非常方便,可以帮助追踪这些内容:

http://msdn.microsoft.com/en-us/library/ms220948(v = vs.90).aspx

但是..绝不是追踪这些错误的实际原因,最高警告级别,警告作为错误和静态代码检查器有助于将这些问题的大部分置于BAY中。