c++ - 为什么 C++ std vector 会在分配或调整大小时出现段错误?

标签 c++ stl vector segmentation-fault opensuse

<分区>

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

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

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

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

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

有没有人见过这样的东西?有什么想法吗?

谢谢!

最佳答案

您在哪里构建和链接应用程序?和什么 选项?如果您动态链接 C++ 标准 图书馆,你很容易遇到问题; C++标准 库以破坏二进制文件的方式进行了多次更改 兼容性和二进制兼容性会受到影响 编译器选项也是如此。一般来说,你应该使用 options -static-libstdc++ 构建时,避免这样 问题。 (请注意,系统也是如此 库,其中动态链接是首选。)

关于c++ - 为什么 C++ std vector 会在分配或调整大小时出现段错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14200189/

相关文章:

C++ - Eclipse - 组织包括

c++ - 在这种情况下我会返回什么

c++ - 为什么使用 std::transform 会导致 exc_bad_access

arrays - std::arrays 的 std::vector 的比较函数

c++ - 我可以在不推送的情况下向 vector 添加值吗?

c++ - 非原始成员初始化中的复制构造函数

c++ - 将指向函数的指针作为参数传递给函数

c++ - STL优先级队列中的堆管理是否调用复制构造函数?

c++ - 无法访问 C++ 中全局变量的构造函数中的静态(非原始)成员

c++ - 提交时的 SIGSEGV