【问题标题】:SIGSEGV error, the code is correct but still not giving any output can someone explainSIGSEGV 错误,代码是正确的,但仍然没有给出任何输出,有人可以解释一下吗
【发布时间】:2021-06-30 09:38:03
【问题描述】:
    #include <iostream>
    #include <bits/stdc++.h>
    #include <stack>
    #include <algorithm>
    #include <vector>
    #include <iterator>
    #define ll long long    
    using namespace std;
    int main() {
        ll t;
        cin >> t;
        while(t--) {
           ll n,k;
           cin >>n >>k;
           vector<ll> arr;
           for(int i=0; i<n; i++) cin >>arr[i];
            vector <ll> freq;
           for(int i=1;i<=k;i++) freq.push_back(i);
           ll min=n,val,diff=0,max=0;
            for(int i=0;i<k;i++){
               ll c=count(arr.begin(),arr.end(),freq[i]);
               if(min>c) 
               {min=c;
               val=freq[i];
               }
           }
           if(min==0) max=n;
           else{
               vector<ll> diffarr;
            diffarr.push_back(0);
               for(int i=0;i<n;i++)
               {
                   
                 if(arr[i]==val){
                     diffarr.push_back(i);                     
                      }
               }
               for(int i=0;i<min;i++)
               {
                   diff=diffarr[i+1]-diffarr[i];
                   if(max<diff) max=diff;
               }
           }
            cout <<max <<endl;
                    }
        return 0;
    }

当不接受输入时,代码工作正常,但一旦我接受输入,它就会引发 SIGSEGV 错误 我已经调试了很多次,以摆脱所有的分段错误和各种错误。有人可以调查一下吗,那将是 gr8 的帮助

【问题讨论】:

    标签: debugging vector segmentation-fault frequency


    【解决方案1】:

    代码正确

    不,它不是。从以下几行开始:

    vector<ll> arr;
    for(int i=0; i<n; i++) cin >>arr[i];
    

    您声明一个向量arr,并立即尝试写入该向量中的元素0。

    但是向量还是空的,所以里面有no元素0。在大多数 STL 实现中,尝试写入地址 0 会导致崩溃。

    阅读How to debug small programs 可能会让您受益。学习如何使用调试器也是如此。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-29
      • 1970-01-01
      • 2018-07-28
      • 2011-02-20
      相关资源
      最近更新 更多