我正在使用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;
}
答案 0 :(得分:4)
根据the documentation,您应该使用sqlite3_free()
来发布错误消息字符串:
为避免内存泄漏,应用程序 应该在出错时调用sqlite3_free() 消息字符串通过返回 sqlite3_exec()的第五个参数 错误消息字符串后是否 需要更长时间。