gpt4 book ai didi

c++ - 在 qt 中使用 new[] 时发生奇怪的崩溃

转载 作者:行者123 更新时间:2023-11-30 04:26:41 25 4
gpt4 key购买 nike

下面的代码会崩溃,我发现它与“new []”有关

MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);


QPushButton *buttons = new QPushButton[5];
for(int i=0;i<5;++i){
buttons[i].setGeometry(0,0,30,40);
buttons[i].setParent(this);
}

}

将 new[] 改为普通数组后,它工作正常

#mainwindow.h
QPushButton buttons[5];

#mainwindow.cpp
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);


for(int i=0;i<5;++i){
buttons[i].setGeometry(0,0,30,40);
buttons[i].setParent(this);
}

}

有什么想法吗?谢谢

最佳答案

我不是 Qt 专家,但据我所知,QObject 拥有其所有子对象的所有权(它在析构函数中删除它们) .

如果是这种情况,您不应该做任何您正在做的事情 - 每个 QPushButton 都应该动态单独分配 使用 new,您的第二个示例没有崩溃这一事实很奇怪。

关于c++ - 在 qt 中使用 new[] 时发生奇怪的崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11425709/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com