按下按钮,我打开了一个窗口。
在这个窗口中,我创建了一个38 QLabel的QList:QList<QLabel*> Nombres;
我分配了它:
for(int i = 0; i <= 38; i++)
{
Nombres.push_back(new QLabel(QString::number(i)));
}
但是当我打开窗口时,程序有时会崩溃,有时候却没有。有时,当我关上窗户时,它会崩溃。这是随机的。
我尝试使用表而不是使用QLabel但是存在同样的问题
程序因错误而崩溃:损坏的双链表:0x00000000019499b0 ***
任何解决方案?
答案 0 :(得分:-2)
问题可能是指针在其他地方被删除了。您的代码没有特别的错误,但它是内存分配管理不佳的一个例子。
编辑:在C ++中,你必须知道谁拥有所有指针。某些功能具有所有权,例如将QLabel指针添加到QDialog。你不能两次给同一个物体。一旦为对话框提供了数字标签,就不会拥有它。如果你给它两次(在你的例子中将相同的QLabel放在任何对话框上两次),它将被删除两次,导致未定义的行为和崩溃。