c++程序运行崩溃解决方案

c++程序运行崩溃
NewtoOld=new int[TotalNode1-1];

for (i=0;i<(TotalNode1-1);i++)
{
if (i<shortnumber-1)
{
                  cout<<bus[i].NodeNumber<<endl;---------可运行
                  NewtoOld[i]=1;------------------------系统崩溃
          cout<<NewtoOld[i]<<endl;
          NewtoOld[i]=bus[i].NodeNumber;
  cout<<NewtoOld[i]<<endl;
}
else
{
NewtoOld[i]=bus[i+1].NodeNumber;
            cout<<NewtoOld[i]<<endl;
}

}
开始程序可以运行,最近出现崩溃现象,上面指出了不可运行点。
问题签名:
  问题事件名称: APPCRASH
  应用程序名: 短路电流.exe
  应用程序版本: 0.0.0.0
  应用程序时间戳: 55f8c941
  故障模块名称: 短路电流.exe
  故障模块版本: 0.0.0.0
  故障模块时间戳: 55f8c941
  异常代码: c0000005
  异常偏移: 00009e1a
  OS 版本: 6.1.7600.2.0.0.256.1
  区域设置 ID: 2052
  其他信息 1: 4f96
  其他信息 2: 4f96e151640d4b116dc53c7c9b0a509e
  其他信息 3: e889
  其他信息 4: e88901bd201a83f848bd3fe8516f2634

联机阅读隐私声明:
  http://go.microsoft.com/fwlink/?linkid=104288&clcid=0x0804

如果无法获取联机隐私声明,请脱机阅读我们的隐私声明:
  C:\Windows\system32\zh-CN\erofflps.txt

------解决思路----------------------
最大可能就是i大过了数组的最大长度,数组下标越界。
 NewtoOld[i]
------解决思路----------------------
崩溃的时候在弹出的对话框按相应按钮进入调试,按Alt+7键查看Call Stack即“调用堆栈”里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处,看不懂时双击下一行,直到能看懂为止。