关于 c : 从 main 返回时的分段错误(非常简短的代码,没有数组或指针) | 珊瑚贝

Segmentation fault on returning from main (very short and simple code, no arrays or pointers)


我一直想知道为什么以下琐碎的代码在从 main() 返回时会产生分段错误:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
//Produces”Error while dumping state (probably corrupted stack); Segmentation fault”

#include <iostream>
#include <fstream>
#include <vector>
using namespace std;

class Test
{
    vector<int> numbers;
};

int main()
{
    Test a;
    ifstream infile;

    cout <<“Last statement…” << endl; // this gets executed
    return 0;
}

有趣的是,
1)如果只声明了两个变量之一,我没有得到错误,
2)如果我声明一个向量变量而不是一个带有向量成员的对象,一切都很好,
3) 如果我声明一个 ofstream 而不是 ifstream,那么一切正常。
这个特定组合似乎有问题…

这可能是编译器错误吗?我在 cygwin 中使用 gcc 版本 3.4.4。

提前感谢您的提示。

加博尔

  • gcc 3.4.4 是古老的。可以试试4系吗?
  • 我记得看到过类似的错误报告,但我记不清了,所以我找不到它。但我非常有信心这是一个已被修复的模糊错误。
  • 来来。我记得 3.0 是最先进的。现在 gcc 2.95/2.96 现在有一个古老而古怪的编译器。
  • 我只是尝试在 g 版本 g (GCC) 3.4.4 中编译您的程序(cygming special,gdc 0.12,使用 dmd 0.125),它工作正常
  • 有趣的是,它应该对你有用,Thanh,使用相同版本的 gcc。 (虽然我真的不明白为什么 gdc 和 dmd 版本在这里是相关的;这些不是与 D 编程语言相关吗?)


这是一个错误。如果这是您的整个程序,那么它绝对没有问题。您在编译器或标准库中发现了一个错误。正如评论中向您推荐的那样,尝试使用 4.x 系列 gcc 编译器。 3.x 系列老如山河。

  • 非常感谢您的及时回答/评论。不幸的是,在这种情况下升级编译器并非易事。我正在使用一个名为 Tscope 的 C 库进行心理学实验,该库依赖于 Allegro 游戏库。 Tscope 预装了 cygwin 环境、gcc 编译器、基本 IDE 等。问题是:Allegro 不再在更新的 cygwin 上编译。而且我不相信仅仅替换 gcc.exe 会起作用,对吗?
  • @Gábor Kovács – 不,这还不够。但我相信 cygwin 有一个打包系统,可以让你有选择地升级。所以你可以试试。


来源:https://www.codenong.com/4702755/

微信公众号
手机浏览(小程序)

Warning: get_headers(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57

Warning: get_headers(): Failed to enable crypto in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57

Warning: get_headers(https://static.shanhubei.com/qrcode/qrcode_viewid_8655.jpg): failed to open stream: operation failed in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57
0
分享到:
没有账号? 忘记密码?