Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/153.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++ unix中的分段错误,但在Windows中工作正常_C++_Unix_Static - Fatal编程技术网

C++ unix中的分段错误,但在Windows中工作正常

C++ unix中的分段错误,但在Windows中工作正常,c++,unix,static,C++,Unix,Static,_var是classa的静态对象。加载dll时,控件进入静态对象初始化。此时,控件进入构造函数,在构造函数内执行代码后,由于分段错误而中断。 这在windows中运行良好,只有在unix中我才遇到这个问题 使用dbx debugger中的print命令检查_var的值时,它会进入无限循环。如果您不熟悉,请阅读常见问题解答:如果您提供一个示例,我们将更容易提供帮助。请为相关类发布更完整的代码。但我的直觉是,您在某种程度上依赖于多个静态变量的初始化顺序,这是无法做到的。如果它们是独立变量,编译器可以

_var是classa的静态对象。加载dll时,控件进入静态对象初始化。此时,控件进入构造函数,在构造函数内执行代码后,由于分段错误而中断。 这在windows中运行良好,只有在unix中我才遇到这个问题


使用dbx debugger中的print命令检查_var的值时,它会进入无限循环。

如果您不熟悉,请阅读常见问题解答:如果您提供一个示例,我们将更容易提供帮助。请为相关类发布更完整的代码。但我的直觉是,您在某种程度上依赖于多个静态变量的初始化顺序,这是无法做到的。如果它们是独立变量,编译器可以自由地以任何顺序运行它们的构造函数。一种可能的解决方法是强制及时初始化静态变量,例如替换classa classa::u var;使用classa&getVar{static classa x;return x;}以便必须调用函数才能初始化值,在那之前它不会被初始化。你好Kevin。谢谢你的回复。对象是私有成员,构造函数中没有代码。我不明白我将如何使用getVar方法。它将是一个静态方法吗?
classa classa::_var

classa::classa() {

}