sqlite3_exec есть утечка памяти? - PullRequest
1 голос
/ 11 ноября 2010

Я использую SQLite для хранения своих данных.Я пишу класс-оболочку, и я хочу знать: будет ли утечка памяти, если (res! = SQLITE_OK) и errorMsg будут отображаться на экране ??

Так что мне нужно сделать бесплатно (errorMsg);в утверждении "если"?Спасибо!

-(int) executeQuery: (NSString *) sqlQueryStr
{
char *errorMsg = NULL;
int res = SQLITE_ERROR;

res = sqlite3_exec(database, [sqlQueryStr UTF8String], NULL, NULL, &errorMsg);

if (res != SQLITE_OK)
{
    sqlite3_close(database); 
    NSLog(@"executeQuery Error:  %@", errorMsg);
    database = NULL;
    return res;
}

return res;
}

1 Ответ

4 голосов
/ 11 ноября 2010

Вы должны использовать sqlite3_free() для освобождения строки сообщения об ошибке согласно документации :

Чтобы избежать утечек памяти, приложение должен вызвать sqlite3_free () при ошибке строки сообщений, возвращаемые через 5-й параметр sqlite3_exec () после строки сообщения об ошибке нет больше нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...