2

sqlite3_open()のドキュメントには次のように書かれています。

「データベース接続ハンドルは、エラーが発生した場合でも、通常*ppDbで返されます。」

これは、sqlite3_open()がSQLITE_OK以外のものを返し、null以外のデータベースハンドルを返す場合、sqlite3_open()を再試行する前にsqlite3_close()を使用する必要があることを意味しますか?

もしそうなら、これは、データベースがロックされているためにデータベースをランダムに開くことができないという問題を説明している可能性があります。

4

1 に答える 1

5

sqlite3はい、 null以外として返された場合は、接続オブジェクトを閉じる必要があります。

sqlite3_open()のマニュアルは非常に明確です。

開いたときにエラーが発生するかどうかに関係なく、データベース接続ハンドルに関連付けられているリソースは、不要になったときにsqlite3_close()に渡すことで解放する必要があります。

少なくとも、接続オブジェクトとそれに割り当てられているリソースを解放するsqlite3ため、接続オブジェクト自体のメモリリークが発生します。sqlite3_close()

于 2013-03-09T16:58:30.280 に答える