我正在开发黑莓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)替换它,但崩溃仍然发生。
崩溃说:分段错误
有人请帮助我! 我好几天都在努力解决这个问题。由于
此致 瑜伽
答案 0 :(得分:1)
你这样做是错误的。 如果您想在您的类中重复使用searchModel Object,请将其设为成员变量,然后只执行您的任务。
答案 1 :(得分:0)
您必须使用NULL初始化GroupDataModel指针。否则,指针被分配一些仍在存储器中的随机值。如果您访问未初始化的指针,则会出现分段错误。
GroupDataModel *searchModel = 0;
答案 2 :(得分:0)
代码崩溃,因为您正在取消引用未初始化的指针。 <{1}}在调用searchModel
时尚未初始化为任何内容。
如果多次调用您的代码,最好将searchModel->clear()
声明为成员变量:
searchModel
然后你需要初始化它,例如在包含类的构造函数中,但不是在被调用的函数中,因为你只需要一个GroupDataModel实例。
GroupDataModel *searchModel;
然后你的其余代码应该可以工作。