这是一个会产生分段错误的最小代码。
#include<vector>
int main() {
std::vector<double> a;
a.resize(10);
return 0;
}
显然这段代码没有任何问题。我在几个系统上运行它没有问题,但它在我的工作PC上产生了分段错误。
在运行openSUSE 11.1的系统上使用g ++ file.cpp编译代码。我知道它是一个较旧的操作系统,但我不允许升级或重新安装。我唯一拥有权限的是zypper(用于安装和删除程序的命令行实用程序)。
我的假设是它与c ++库有关。我已经尝试重新安装我能想到的与gcc / g ++和libstdc ++相关的所有内容,但我仍然看到同样的问题。
有没有人见过这样的东西?有什么想法吗?
谢谢!
答案 0 :(得分:1)
您在哪里构建和链接应用程序?有什么
选择?如果您正在动态链接C ++标准
库,你很容易遇到问题; C ++标准
库以破坏二进制的方式改变了几次
兼容性和二进制兼容性可能会受到影响
编译器选项也是如此。一般来说,你应该使用
构建时选项-static-libstdc++
,以避免这种情况
问题。 (请注意,系统的不为true
库,其中首选动态链接。)