SQLite的sqlite3_column_blob函数

本文详细解释了SQLite3中如何使用sqlite3_column_blob获取blob字段内容,并探讨了该操作涉及的内存管理问题。作者指出blob内容由SQLite内部管理,调用者无需负责释放。

SQLite3利用函数sqlite3_column_blob来返回blob字段的内容的指针,并通过sqlite3_column_bytes来返回对应该字段的长度。

只是一直有一个疑问就是通过sqlite3_column_blob返回的二进制blob内容的内存是谁来释放,是由SQLite内部还是用调用者来释放。

后来仔细观察了内存变化发现,sqlite3_column_blob函数会预先分配一块内存,每次调用sqlite3_step然后sqlite3_column_blob字段内容的时候,都会在这一个指定的空间内写入,所以调用者不必去管理者块内存,也因此,每次sqlite3_column_blob返回的二进制内容都需重新写去到调用者需要的地方去,否则下次再有二进制读出的时候,原来的内容就会被释放掉。

转载于:https://www.cnblogs.com/BlueWinters/p/3662332.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值