这个代码出了什么问题?我有分段错误
What is wrong with this code? I am getting segmentation fault
我收到运行时错误,这是什么错误?在移除if(Px[size-1].ele>a)时,错误消失!我只在我为零时尝试使用while,但仍然出现错误!
#include <iostream>
using namespace std;
#define f(i,n) for(i=0;i<n;i++)
#define f1(i,n) for(i=1;i<=n;i++)
#define ll long long
#define ld long double
#define MOD 1000000007
typedef struct{
int ele;
int pos;
int sum;
} vj;
int main()
{
int n,size,sum,i,a;
vj Px[1000000];
cin>>n;
size=sum=0;
f(i,n){
cin>>a;
sum+=a;
while(size){
if(Px[size-1].ele>a)
break;
size--;
}
Px[size].ele=a;
Px[size].pos=i+1;
Px[size].sum=sum;
size++;
}
//sum=P[0].ele*P[0].pos-P[0].sum;
//f(i,size-1)
// sum+=(P[i+1].ele*(P[i+1].pos-P[i].pos))-(P[i+1].sum-P[i].sum);
//cout<<size<<endl;
return 0;
}
typedef struct{
int ele;
int pos;
int sum;
} vj;
int main() {
vj Px[1000000];
...
这是堆栈溢出。MSVC的默认堆栈大小限制为1MB。你正在打破这个极限。
我建议使用堆分配,而不是依赖于那个大小的堆栈本地变量。
相关文章:
- 在某些循环内使用vector.push_back时出现分段错误
- 为什么在运行时没有向我们提供有关分段错误的更多信息?
- 如何解决gcc编译器优化导致的centos双编译器设置中的分段错误
- 当我的阵列太大时出现分段错误
- 分段错误当我试图运行程序时出错
- 在c++中初始化矩阵时出现分段错误(核心转储)
- 尝试使用集合函数时出现分段错误
- 我无法缩小此分段错误的原因
- g++的分段错误(在NaN上使用to_string两次时)
- 我是如何在这段代码中出现分段错误的
- 创建结构的数组时遇到分段错误
- 在c++中键入向量中的所有值后,得到分段错误(核心转储)
- 在 c++ 中实现 Trie 时出现分段错误
- 为什么 fstream 在打开带有格式的文件时会导致分段错误?
- 为什么我遇到分段错误?
- 动态类的分段错误(家庭作业问题)
- 分段错误 - 读取初始化指针的数组
- 如何摆脱C ++中的分段错误错误?
- 使用 CTYPE 时出现分段错误
- 为什么代码给出分段错误?