求原因:c++程序停止工作

程序一运行就停止工作,调试是在int main()出了问题,求原因:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int k,m,n,h,t,a[30001],x,i,num;
bool b[4300000]={false};
string s;
cin>>k>>m;
a[1]=1;
b[1]=true;
while (t<4300000)
{
h++;
if (a[h]*2+1<4300000) { t++; a[t]=a[h]*2+1; b[a[t]]=true; }
if (a[h]*4+5<4300000) { t++; a[t]=a[h]*4+5; b[a[t]]=true; }
}
x=1;
s="1";
k--;
while (k>0)
{
for (int i=x+1;i<=4300000;i++)
if (b[i]) break;
else x++;
k--;
num=x;
cout<<x;
}
cout<<s<<endl;
n=s.size();
while (m>0)
{
i=0;
while (s[i]>=s[i+1] && i<n-1)
i++;
s.erase(s.begin()+i);
m--;
}
while (s[0]=='0')
s=s.substr(1);
cout<<s;
return 0;
}

运行错误(RE)与编译错误(CE)是两类错误,编译错误,是程序语法错误,类似于忘记打分号或是括号;运行错误,是指程序在运行过程中出现错误,只能说是程序存在一定的边界bug或是存在非法指令。像非法调用内存(a[-1]),递归爆栈
温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-08-05
bool b[4300000]
这个太多了,导致堆栈溢出本回答被提问者采纳