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
#include
#include
#include
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", );
if(
rc )
{
fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg
(db));
sqlite3_close(db);
exit(-1);
}
for(rc=0; rc <
1; 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, , 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