executeAndWait를 호출하고 응답이 반환 될 때 힙의 메모리가 76KB 증가합니다. 나는 그것이 왜 일어나는 지 모른다. 이 메모리를 어떻게 정리합니까? DB와 나의 연결 생성SqlConnection의 executeAndWait은 BB10에서 메모리 누수를 일으 킵니다.
void DBHelper::execute (const QVariant &criteria,int id,bool isAsynch)
{
if (checkConnection(isAsynch))
{
if(!isAsynch)
{
DataAccessReply reply= sqlConnector->executeAndWait(criteria, id); // memory leak happens when the reply is found.
this->onLoadSynchResultData(reply);
}
}
}
문서 링크는 here.
덕분에,
bool DBHelper::checkConnection(bool isAsynch)
{
if(sqlConnector && dbFile->exists())
{
return true;
}
if (dbFile->exists())
{
sqlConnector = new SqlConnection(dbPath, "connect");
connect(sqlConnector, SIGNAL(reply(const bb::data::DataAccessReply&)), this,
SLOT(onLoadAsyncResultData(const bb::data::DataAccessReply&)));
return true;
}
return false;
}
executeAndWait에 대한 호출이 기능에, 다음입니다.
이전 포인터를 덮어 쓸 때마다 SqlConnection 개체를 할당하는 것을 볼 수 있습니다. 새 것을 할당하기 전에 청소해야합니다. 원시 지점보다 QSharedPointer를 사용하는 것이 더 좋을 것입니다. –
아닙니다. 개체가 이미 만들어지지 않았고 데이터베이스 파일도 생성되지 않은 경우 SqlConection 개체를 만듭니다. 따라서 객체는 실제로 한 번만 생성됩니다. – Tahlil