【发布时间】:2020-10-23 01:18:51
【问题描述】:
我正在练习一个数组操作问题。解决时我声明了一个数组(代码中的数组 A)。 对于某些测试用例,我遇到了分段错误。我用向量替换了数组并得到了交流电。我不知道这是什么原因。请解释一下。
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n,m,a,b,k;
cin>>n>>m;
vector<long int> A(n+2);
//long int A[n+2]={0};
for(int i=0;i<m;i++)
{
cin>>a>>b>>k;
A[a]+=k;
A[b+1]-=k;
}
long res=0;
for(int i=1;i<n+2;i++)
{
A[i]+=A[i-1];
if(res<A[i])
res=A[i];
}
cout<<res;
return 0;
}
【问题讨论】:
-
这是什么语言?请添加到标签。
-
您能否确保您提供的代码可以编译?这个例子没有。如果您对用于 n、m、a、b 和 k 的值进行硬编码,也会更有帮助。有很多方法可以在几个不同的地方按原样破坏代码,在您的情况下,无法判断它是如何或在哪里破坏的。
标签: c++ arrays vector segmentation-fault dynamic-memory-allocation