使用 QLabel 的 QList 时程序崩溃

Program crashes when using QList of QLabel

我制作了一个 window,按下按钮即可打开。 在这个 window 中,我创建了一个包含 38 个 QLabel 的 QList :QList<QLabel*> Nombres; 我这样分配它:

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

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

我试过使用 table 而不是 QLabels,但还是有同样的问题

程序崩溃并出现错误:损坏的双链表:0x00000000019499b0 ***

有什么解决办法吗?

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

编辑:在C++中,你必须知道谁拥有所有的指针。一些函数拥有所有权,比如添加一个指向 QDialog 的 QLabel 指针。你不能把同一个东西送人两次。一旦您将数字标签赋予对话框,您就不再拥有它。如果你放弃它两次(在你的例子中两次将相同的 QLabel 放在任何对话框上),它将被删除两次,导致未定义的行为和崩溃。