程序在使用 QLabel 的 QList 时崩溃

Program crashes when using QList of QLabel

本文关键字:QList 崩溃 QLabel 程序      更新时间:2023-10-16

我做了一个通过按下按钮打开的窗口。在这个窗口中,我创建了一个包含 38 个 QLabels的 QList: QList<QLabel*> Nombres; 我像这样分配它:

for(int i = 0; i <= 38; i++) { Nombres.push_back(new QLabel(QString::number(i))); }

但是当我打开窗口时,有时程序会崩溃,有时不会。有时,当我关闭窗口时,它会崩溃。这是随机的。

我尝试使用表格而不是使用 QLabels,但存在同样的问题

程序崩溃并显示错误:双链表损坏:0x00000000019499b0***

任何解决方案?

问题可能是指针在其他地方被删除。 您的代码没有特别的错误,但它是内存分配管理不佳的一个示例。

编辑:在C++中,您必须知道谁拥有所有指针。一些函数获得所有权,例如将QLabel指针添加到QDialog。你不能两次赠送同一个对象。 为对话框提供数字标签后,您就不拥有它。 如果您放弃它两次(在您的示例中将相同的 QLabel 放在任何对话框中两次(,它将被删除两次,从而导致未定义的行为和崩溃。