像这样:const void * test = sqlite3_column_blob(stat,1); 我可以删除或删除[]测试吗?
答案 0 :(得分:7)
返回的指针在发生类型转换或调用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是一种不完整的类型。你也不能删除不完整的类型。)