我正在使用Qt框架在C ++中开发应用程序但我需要读取.xslx文件以将其导入到sqlite数据库中。我使用的是Qt Xlsx模块,但由于我的程序在执行期间的某个随机点崩溃,我发现了一些困难。该文件大约有1500行和10列。我能够读取700到1000行,但随后崩溃了。我认为这是一个内存问题,但由于我在Mac OS X系统上,我无法使用Valgrind。 我的代码的相关部分如下。
void Controller::ImportDatabase(const QString &filepath)
{
QStringList* person_fields = new QStringList;
QXlsx::Document *xlsx_database = new QXlsx::Document(filepath);
int number_of_row = xlsx_database->dimension().lastRow();
int number_of_column = xlsx_database->dimension().lastColumn();
for (int row = 2; row <= number_of_row; ++row) {
++count;
qDebug() << "count: " << count;
for(int column = 0; column < number_of_column ; ++column) {
if ((QXlsx::Cell *cell = xlsx_database->cellAt(row, column))) {
person_fields->append(cell->value().toString());
delete cell;
}
}
qDebug() << "NOME: " << person_fields->at(0);
//Create a new Person and pass its pointer around: all commented anyway
person_fields->clear();
delete cell;
}
delete person_fields;
delete xlsx_database;
}
非常感谢任何建议或想法。
答案 0 :(得分:1)
你必须不删除cell
,因为它归QXlsx :: Document所有。