bb10级联清除GroupDataModel崩溃

bb10 cascades clear GroupDataModel crash

本文关键字:崩溃 GroupDataModel 清除 级联 bb10      更新时间:2023-10-16

我正在开发黑莓10应用程序。我在使用GroupDataModel时遇到一些问题。

这是代码:

            GroupDataModel *searchModel;
            if (searchModel != NULL){
                qDebug() << "Masuk sini";
                searchModel->clear();
            }
            searchModel = new GroupDataModel(
                    new QListDataModel<QString>(
                            QList<QString>() << "suburbName" ));
            QVariantMap map;
            for (int i = 0; i < list.size(); ++i) {
                QVariantMap x = list.at(i).toMap();
                map["suburbName"] = x.value("address").toString();
                qDebug() << x;
                qDebug() << map;
                searchModel->insert(map);
            }
            searchList->resetDataModel();
            searchModel->setGrouping(ItemGrouping::None);
            searchList->setDataModel(searchModel);

这个代码不止调用过一次。所以当它被调用时,我必须清除GroupDataModel。但它总是崩溃。当我调试时,问题是当searchModel->clear();我已经试过用free(searchModel)替换它,但崩溃仍然会发生。

崩溃显示:分段故障

有人请帮帮我!我已经和这个问题斗争了好几天了。

感谢

谨致问候,瑜伽

你做这件事的方式不对。如果您想在类中重用searchModel对象,请使其成为成员变量,然后只执行您的任务。

您必须用NULL初始化GroupDataModel指针。否则,指针会被分配一些仍在内存中的随机值。如果访问未初始化的指针,则会出现分段错误。

GroupDataModel *searchModel = 0;

由于取消引用未初始化的指针,代码崩溃。当调用CCD_ 2时,CCD_。

如果您的代码被多次调用,那么最好将searchModel声明为成员变量:

GroupDataModel *searchModel;

然后,您需要初始化它,例如在包含类的构造函数中,但不在多次调用的函数中,因为您只需要GroupDataModel的一个实例。

searchModel = new GroupDataModel(QStringList() << "suburbName" );

然后您的代码的其余部分应该可以工作了。