sqlite3_exec是否有内存泄漏?

时间:2010-11-11 16:55:44

标签: iphone memory-leaks sqlite

我正在使用SQLite来存储我的数据。我正在编写包装类,我想知道:如果(res!= SQLITE_OK)和errorMsg将显示在屏幕上会出现内存泄漏吗?

所以我需要做免费的(errorMsg);在“if”声明中?感谢名单!

-(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 个答案:

答案 0 :(得分:4)

根据the documentation,您应该使用sqlite3_free()来发布错误消息字符串:

  

为避免内存泄漏,应用程序   应该在出错时调用sqlite3_free()   消息字符串通过返回   sqlite3_exec()的第五个参数   错误消息字符串后是否   需要更长时间。