qq_41441842 2021-05-21 12:08 采纳率: 50%
浏览 315

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

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

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

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

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

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

  • 写回答

2条回答 默认 最新

  • qq_41441842 2021-05-21 14:46
    关注
        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

    本回答被专家选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?