MySQL Connector C ++ 1.05を使用すると、メモリリーク/削除エラーが発生します。
コネクタは、クエリの実行から結果セットへのポインタを返します。
ポインタをに割り当てていますboost::shared_ptr
。呼び出しは次のようになります。
std::string query_text;
query_text = /* ... */;
boost::shared_ptr<sql::Statement> query(p_db_connection->createStatement());
if (!query)
{
return;
}
boost::shared_ptr<sql::ResultSet> query_results(query->executeQuery(query_text));
if (!query_results->next())
{
return;
}
これが私の質問です:
- 割り当てられた結果セットを削除する責任は誰にありますか?
- 使用する必要がありますか、
scoped_ptr
それともshared_ptr
結果が関数内でのみ使用されるのですか? - 別のクエリが実行されたときに結果は有効ですか?
MySQL Connector C ++ 1.05、MS VisualStudio2008バージョン9.0を使用しています。