c++ - QSqlQuery Memory issues. QSqlQuery::exec() and QSqlDatabase::open()/close(); -
c++ - QSqlQuery Memory issues. QSqlQuery::exec() and QSqlDatabase::open()/close(); -
i'm checking memory usage of application i've made. makes numerous calls read , write values , database (sqlite 3). i've observed following:
qsqlquery::exec() uses kb of ram execute given query, not release memory after goes out of scope.
qsqldatabase:: open() & close() not help free resources documentation suggest. if anything, close() causes resources (at to the lowest degree memory) remain 'trapped' on heap/stack.
for example, here typical segment of code i've been using access database.
qstringlist values; db.open(); qstring strquery = "select distinct " + field + " " + table + str; qsqlquery query(db); query.prepare(strquery); if(query.exec() == true) { while(query.next()) { values.push_back(query.value(0).tostring()); } } db.close(); having experimented find code below 'traps' less memory:
qstringlist values; qstring strquery = "select distinct " + field + " " + table + str; qsqlquery query(strquery, db); while(query.next()) { values.push_back(query.value(0).tostring()); } however, little amount of memory still not released. has else experienced this?
can how release memory?
p.s. same happens here, memory never released:
db.open(); qsqlquery query(db); query.exec("delete table1"); query.exec("delete table2"); query.exec("delete table3"); query.exec("delete table4"); ... db.close();
it seems in order release memory must create qsqlquery variable pointer, , delete pointer before close database:
qstringlist values; db.open(); qstring strquery = "select distinct " + field + " " + table + str; qsqlquery *query = new qsqlquery(db); query->prepare(strquery); if(query->exec() == true) { while(query->next()) { values.push_back(query->value(0).tostring()); } } delete query; db.close(); the memory released after database closes.
c++ qt sqlite
Comments
Post a Comment