qt 在关闭程序的时候异常退出?

我在关闭运行的qt程序时出现:程序异常结束。

debug后提示:从底层发来一个信号,分段错误(似乎有野指针什么的都会出现这个错)。

光标指向了某个.cpp文件的析构函数,就下面那个位置。

key_board::~key_board()
{
    delete ui;
}

其他没什么信息,可能是析构出错了,但不应该呀

    for(int o=7;o>=3;o--)//一共有5组八度,o是octave的手首字母,octave是八度的意思
    {
        keyBoard_octave[o]=new key_board(o);//参数o代表是第几组八度,从C3-C7
        keyBoard_octave[o]->setParent(this);
    }

以上是.cpp的内容,在头文件声明了key_board *keyBoard_octave[5];

本来给数组对象赋值应该从0-4,而我从7-3。很明显数组的越界。为什么会犯这么低级的错误呢?这个程序是和音乐相关,一般的音乐软件键盘有12个八度,我觉得用不上,要5个八度就行了,就是从C3-C7,于是下意识的就写了keyBoard_octave[3]keyBoard_octave[7]。

这类数组越界经常找不到,系统往往提示:

 Signal received

 The inferior stopped because it received a signal from the Operating System.

 Signal name : SIGSEGV

 Signal meaning : Segmentation fault
 

或者输出这种提示:FTH: (12792): *** Fault tolerant heap shim applied to current process. This is usually due to p

建议先查看有没有跨线程退出问题,然后检查下代码中有没有new出来没有释放的部分