是否需要删除指针从sqlite3_column_blob()方法获取?

时间:2008-11-28 06:31:52

标签: c sqlite

像这样:const void * test = sqlite3_column_blob(stat,1); 我可以删除或删除[]测试吗?

2 个答案:

答案 0 :(得分:7)

来自sqllite documentation

  

返回的指针在发生类型转换或调用sqlite3_step()或sqlite3_reset()或sqlite3_finalize()之前一直有效。用于保存字符串和BLOB的内存空间会自动释放。 不要将sqlite3_column_blob()返回的指针传递给sqlite3_free()。​​

答案 1 :(得分:0)

查看其API手册。如果它是C API,您可能需要free它。如果它没有像sqlite3_free那样提供自己的函数(例如pcre就这样做了),你必须使用该函数。

你不能做的是使用C ++的delete运算符删除它,因为你有一个void指针。您无法删除void指针,因为编译器必须知道其类型。 (而void是一种不完整的类型。你也不能删除不完整的类型。)