2

sqlite3_open() 的文档是这样说的:

“数据库连接句柄通常在 *ppDb 中返回,即使发生错误。”

这是否意味着如果 sqlite3_open() 在再次尝试 sqlite3_open() 之前返回 SQLITE_OK 和非空数据库句柄之外的其他内容,那么您欠 sqlite3_close() ?

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

4

1 回答 1

5

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

sqlite3_open() 手册很清楚;

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

至少,sqlite3如果您不这样做,您将有连接对象本身的内存泄漏,因为sqlite3_close()释放该对象和分配给它的任何资源。

于 2013-03-09T16:58:30.280 回答