程序编译通过但是运行失败,该怎么解决

程序编译通过但是运行失败
void main()
{
int x,m,h;
cout<<"求1到m的和,输入m:"<<endl;

cin>>m;
for(x=1;x<m+1;x++)
h+=x;
cout<<"1到"<<m

但是h初始化后,又能运行了,求解,这里为什么h要初始化,不初始化编译也能通过没错,但是一运行就要显示debug error
------解决思路----------------------
C语言基础, 不初始化, H的初始值是随机值....