SQLite3利用函數sqlite3_column_blob來返回blob字段的內容的指針,並通過sqlite3_column_bytes來返回對應該字段的長度。
只是一直有一個疑問就是通過sqlite3_column_blob返回的二進制blob內容的內存是誰來釋放,是由SQLite內部還是用調用者來釋放。
后來仔細觀察了內存變化發現,sqlite3_column_blob函數會預先分配一塊內存,每次調用sqlite3_step然后sqlite3_column_blob字段內容的時候,都會在這一個指定的空間內寫入,所以調用者不必去管理者塊內存,也因此,每次sqlite3_column_blob返回的二進制內容都需重新寫去到調用者需要的地方去,否則下次再有二進制讀出的時候,原來的內容就會被釋放掉。