Hi again, I now check for NULL to be sure that I'm trying to free up a pointer that actually points to something. Is there an easy way for me to ensure that the memory has been successfully freed up? I understand this might be a basic C question rather than a specific Sqlite question, so apologies for that...
Thanks again, Richard. -----Original Message----- From: Dennis Cote [mailto:[EMAIL PROTECTED] Sent: 28 June 2006 21:46 To: sqlite-users@sqlite.org Subject: Re: [sqlite] sqlite3_free_table question Richard Boyd wrote: > Basically I have a structure I use to hold data results: > > //===================== > typedef struct { > char *sqlStatement; // Either the sqlstatement to be executed or the > last statement that was executed > char **results; // the result stored in an array > char *err_msg; // the error message > int numrows; // number of rows of results > int numcols; // the number of columns of data returned > } RESULT_T; > //======================= > > I pass this structure to a wrapper function that ultimately calls > sqlite3_get_table and returns the results structure on tresults > > //======================= > int execute_command (size_t nbytes, char *command, RESULT_T > *tresults) > //======================= > > In the function that calls execute_command(), I want to free up the memory > that was allocated by sqlite3_get_table(). > > Do I just call the free function like this: > sqlite3_free_table(tresults.results); (assuming that I created a variable > called 'tresults' of type RESULT_T in the calling function). > > Also, how do I free up the error messages? What if there are no results > returned by sqlite3_get_table, can I still attempt to free up the memory > with 'sqlite3_free_table' > > I appreciate you reading down this far, and sorry if my code snips are hard > to follow!! > > Richard, Your call to sqlite3_free_table is correct. You free the error message by calling sqlite3_free(tresult.err_msg). If either pointer returned by sqlite3_get_table() is NULL, then no memory was allocated, so there is no need to free it, however I believe it should be safe to call the free routines with a NULL pointer. HTH Dennis Cote -- No virus found in this incoming message. Checked by AVG Free Edition. Version: 7.1.394 / Virus Database: 268.9.6/378 - Release Date: 28/06/2006