3

这是一个会产生分段错误的最小代码。

#include<vector>
int main() {
  std::vector<double> a;
  a.resize(10);
  return 0;
}

显然这段代码没有任何问题。我已经在几个系统上运行它没有问题,但它在我的工作电脑上产生了分段错误。

代码是在运行 openSUSE 11.1 的系统上使用 g++ file.cpp 编译的。我知道这是一个较旧的操作系统,但我不允许升级或重新安装。我唯一有权使用的是 zypper(用于安装和删除程序的命令行实用程序)。

我的假设是它与 c++ 库有关。我已经尝试重新安装我能想到的与 gcc/g++ 和 libstdc++ 相关的所有内容,但我仍然看到同样的问题。

有没有人见过这样的东西?有任何想法吗?

谢谢!

4

1 回答 1

1

您在哪里构建和链接应用程序?有什么选择?如果你动态链接 C++ 标准库,你很容易遇到问题;C++ 标准库以破坏二进制兼容性的方式进行了多次更改,并且二进制兼容性也可能受到编译器选项的影响。通常,您应该-static-libstdc++在构建时使用选项,以避免此类问题。(请注意,系统库并非如此,其中动态链接是首选。)

于 2013-01-07T17:37:55.777 回答