Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/135.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 结构定义调试与发布模式上的变量初始化_C++_Windows - Fatal编程技术网

C++ 结构定义调试与发布模式上的变量初始化

C++ 结构定义调试与发布模式上的变量初始化,c++,windows,C++,Windows,我正在处理一些要加载到Windows上的DLL。在调试模式下,一切正常。在发布模式下也可以工作,但我已经发现了一些在类初始化时必须解决的问题 我知道这是一个简单而基本的问题,但由于我已经发现了一些问题,我并没有在发布模式上100%地强调选项a 真的是这样的吗,某种优化可能会绕过变量初始化,比如发布模式上的A,所以最好总是像B一样,或者可能在我发现的情况下发生了其他错误?(不是这个,现在很难追踪) 我正在使用MSVC++14.16 _MSC_VER==1916(Visual Studio 2017

我正在处理一些要加载到Windows上的DLL。在调试模式下,一切正常。在发布模式下也可以工作,但我已经发现了一些在类初始化时必须解决的问题

我知道这是一个简单而基本的问题,但由于我已经发现了一些问题,我并没有在发布模式上100%地强调选项a

真的是这样的吗,某种优化可能会绕过变量初始化,比如发布模式上的A,所以最好总是像B一样,或者可能在我发现的情况下发生了其他错误?(不是这个,现在很难追踪)

我正在使用MSVC++14.16 _MSC_VER==1916(Visual Studio 2017版本15.9)

(A)

(B)


您需要对您发现的“一些问题”进行一些描述。更好的是,给出一个可编译的例子,这样人们可以自己看到问题,并在自己的机器上进行实验。知道问题是否简单和基本的唯一方法是知道问题是什么。既然你知道它是简单和基本的。。。(对你的问题有更多的信心,对你的结论是否正确有更少的信心。描述你所看到的。描述你所尝试的。给人们一个机会通过提供一个测试来检查你的结论。)调试生成倾向于将未初始化的变量初始化为0。“隐藏”读取未初始化变量的UB。检查您的初始化。我个人更喜欢一种样式,然后是初始化列表:
slista_meta::slista_meta(IBlock*bk):rodando(false),parar(false){}
struct slista_meta
{
    slista_meta(IBlock * bk);
    bool rodando = false, parar = false;
}
slista_meta::slista_meta(IBlock * bk)
{
     rodando = parar = false;
}