bb10级联清除GroupDataModel崩溃

时间:2015-02-11 07:15:34

标签: c++ blackberry-10 blackberry-cascades

我正在开发黑莓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-&gt; clear(); 我已经尝试用free(searchModel)替换它,但崩溃仍然发生。

崩溃说:分段错误

有人请帮助我! 我好几天都在努力解决这个问题。

由于

此致 瑜伽

3 个答案:

答案 0 :(得分:1)

你这样做是错误的。 如果您想在您的类中重复使用searchModel Object,请将其设为成员变量,然后只执行您的任务。

答案 1 :(得分:0)

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

GroupDataModel *searchModel = 0;

答案 2 :(得分:0)

代码崩溃,因为您正在取消引用未初始化的指针。 <{1}}在调用searchModel时尚未初始化为任何内容。

如果多次调用您的代码,最好将searchModel->clear()声明为成员变量:

searchModel

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

GroupDataModel *searchModel;

然后你的其余代码应该可以工作。