I'm using sqlite3 on embedded system. I've got a very very large memory usage.
My program must loop to show some values catched from a table using SELECT statement. In a while memory usage grow over phisical RAM, so my device lock. If I run the same code on a PC after some minutes the process use a very large amount of memory (512M+). I need to use some function to force memory release or I make some mistake ? Thanks in advance Pierluigi Follow sample code: #include <stdio.h> #include <unistd.h> #include <stdlib.h> #include <sqlite3.h> int main (int argc, char *argv[]) { // Define variables sqlite3 *db; int rc,i; char *zErrMsg = 0; char *zSql; char *prevStatus; sqlite3_stmt *stmt; struct data { int iPortNumber; float fRangeMin; float fRangeMax; float fOffset; float fMinL; float fMinLL; float fMaxH; float fMaxHH; int iDelay; int iHyster; int iAlarm; char *sTimeAlarm; }; struct data riga [16]; // Open Database rc = sqlite3_open("/tmp/test.db", &db); if( rc ) { fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg (db)); sqlite3_close(db); exit(-1); } for(rc=0; rc < 100000000; rc++) { // Init variables i=0; zSql = sqlite3_mprintf("SELECT PortNumber, RangeMin, RangeMax, Offset, MinL, MinLL, MaxH, MaxHH, Delay, Hysteresis, " \ "Alarm, TimeAlarm FROM input_ai WHERE Address=%d and Monitor='Y';", 7); if (sqlite3_prepare(db, zSql, -1, &stmt, 0) != SQLITE_OK) return(-1); // Save at least 16 rows while ((sqlite3_step(stmt) ==SQLITE_ROW) & (i < 16)) { riga[i].iPortNumber = sqlite3_column_int(stmt,0); riga[i].fRangeMin = sqlite3_column_double(stmt,1); riga[i].fRangeMax = sqlite3_column_double(stmt,2); riga[i].fOffset = sqlite3_column_double(stmt,3); riga[i].fMinL = sqlite3_column_double(stmt,4); riga[i].fMinLL = sqlite3_column_double(stmt,5); riga[i].fMaxH = sqlite3_column_double(stmt,6); riga[i].fMaxHH = sqlite3_column_double(stmt,7); riga[i].iDelay = sqlite3_column_int(stmt,8); riga[i].iHyster = sqlite3_column_int (stmt,9); riga[i].iAlarm = sqlite3_column_int(stmt,10); riga[i].sTimeAlarm = (char *) sqlite3_column_text(stmt,11); i++; } sqlite3_finalize(stmt); } sqlite3_close(db); } _______________________________________________ sqlite-users mailing list sqlite-users@sqlite.org http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users