【问题标题】:SIGSEGV on declarationSIGSEGV 关于申报
【发布时间】:2014-01-11 18:54:57
【问题描述】:

好的,这是我的全部代码。我删除了其他所有内容。

我可以在codeblocks 中编译它没有问题,但是当使用评估器时它给了我sigsegv

对我来说毫无意义......

这不是因为分配了太多的内存顺便说一句。

     #include <iostream>
     #include <cstdio>
     #include <queue>
     #include <cmath>
     using namespace std;

     int n;
     int kx,ky,px,py;
     long long a,b,c;
     struct par
     {
        int x,y;
     };
     long long int bsiter,bsearch;
     par start,stari,novi;
     long long int high[1001][1001];
     int val[1001][1001];
     int ud,rl;

     int main()
     {
        cin >> n >> kx >> ky >> px >> py >> a >> b >> c;
        cout << 0;

        return 0;
     }

【问题讨论】:

  • 甚至不编译

标签: c++ segmentation-fault


【解决方案1】:

您的代码中存在命名空间冲突:

long long int bsiter,bsearch;

std 中有一个函数bsearch

删除using namespace std;,在cincout之前写上std::

【讨论】:

  • 您假设包含bsearch 的标头。
  • @KarolyHorvath 似乎适合我通过iostream。 (使用 gcc 4.8.1)虽然如果这不是强制性的,你是对的。
【解决方案2】:

尝试改变这些定义

 long long int high[1001][1001];
 int val[1001][1001];

 static long long int high[1001][1001];
 static int val[1001][1001];

【讨论】:

    【解决方案3】:

    long long int high[1001][1001] 在堆栈上分配略多于 8 MB 的空间。
    某些系统的堆栈大小限制为 8 MB。

    【讨论】:

      猜你喜欢
      • 2023-03-26
      • 2014-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-31
      • 2013-11-13
      • 1970-01-01
      相关资源
      最近更新 更多