The rules are quite simple:

If the pointer refers to static memory (preallocated string constants, global 
variables that you can guarantee won't change while SQLite uses them) use 

If the pointer refers to memory obtained from sqlite3_malloc (directly or 
indirectly e.g. via sqlite3_mprintf() ) and you won't refer to this object 
again, pass sqlite3_free.

If the pointer refers to memory obtained from your own allocator and you won't 
refer to this object again, pass your own destructor.

In all other cases, pass SQLITE_TRANSIENT and, if necessary, dispose of the 
memory appropriately.

SQLITE_TRANSIENT is safe but slow, because SQLite needs to copy the string.
Passing a destructor function is faster but implies a contract to NOT USE THE 
SQLITE_STATIC is fastest but implies a contract that the MEMORY WILL NOT CHANGE.

-----Urspr?ngliche Nachricht-----
Von: sqlite-users-bounces at 
[mailto:sqlite-users-bounces at] Im Auftrag von Bart 
Gesendet: Montag, 14. Dezember 2015 20:22
An: General Discussion of SQLite Database
Betreff: [sqlite] sqlite3_free needed when calling sqlite3_result_text ?

Not sure if I need to call sqlite3_free after running sqlite3_result_text or if 
sqlite3_free should be an argument  (last one) in sqlite3_result_text.
Currently I am using SQLITE_TRANSIENT as the last argument, so that is after 
the number of bytes, but have feeling I might be doing this wrong.
Thanks for any advice.

sqlite-users mailing list
sqlite-users at

 Gunter Hick
Software Engineer
Scientific Games International GmbH
FN 157284 a, HG Wien
Klitschgasse 2-4, A-1130 Vienna, Austria
Tel: +43 1 80100 0
E-Mail: hick at

This communication (including any attachments) is intended for the use of the 
intended recipient(s) only and may contain information that is confidential, 
privileged or legally protected. Any unauthorized use or dissemination of this 
communication is strictly prohibited. If you have received this communication 
in error, please immediately notify the sender by return e-mail message and 
delete all copies of the original communication. Thank you for your cooperation.

Reply via email to