2013-03-09 56 views
1

sqlite3_open()的说明文件中提到:如果sqlite3_open()返回错误和有效的数据库连接会怎么样?

“即使发生错误,数据库连接句柄通常也会以* ppDb的形式返回。”

这是否意味着如果在尝试sqlite3_open()之前sqlite3_open()返回SQLITE_OK以外的某个非空数据库句柄,并且您欠sqlite3_close()?

如果是这样,这可以解释我有一个问题,随机数据库无法打开,因为它被锁定。

回答

3

是的,如果返回非空,则需要关闭sqlite3连接对象。

sqlite3_open() manual很清楚;

打开时是否发生错误,当数据库连接句柄关联的资源不再需要时,应通过传递给sqlite3_close()来释放资源。

最起码,你就会有sqlite3连接对象本身的内存泄漏,如果你不这样做,因为sqlite3_close()释放该对象,并分配给它的任何资源。