【发布时间】:2010-09-24 10:05:14
【问题描述】:
像这样: const void * test = sqlite3_column_blob(stat, 1); 我可以删除或删除[]测试吗?
【问题讨论】:
像这样: const void * test = sqlite3_column_blob(stat, 1); 我可以删除或删除[]测试吗?
【问题讨论】:
查看其 API 手册。如果它是 C API,您可能必须 free 它。如果它没有像 sqlite3_free 那样提供自己的函数(例如 pcre 这样做),则必须使用该函数。
你不能做的是使用 C++ 的删除操作符删除它,因为你有一个 void 指针。您不能删除 void 指针,因为编译器必须知道它的类型。 (并且 void 是一个不完整的类型。你也不能删除不完整的类型)。
【讨论】:
在发生类型转换或调用 sqlite3_step() 或 sqlite3_reset() 或 sqlite3_finalize() 之前,返回的指针都是有效的。用于保存字符串和 BLOB 的内存空间会自动释放。 不要将 sqlite3_column_blob() 返回的指针传递给 sqlite3_free()。
【讨论】: