iphone - sqlite3_exec是否存在内存泄漏?

标签 iphone memory-leaks sqlite

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

那么我需要做 free(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;
}

最佳答案

您应该使用sqlite3_free()来释放错误消息字符串,如 the documentation :

To avoid memory leaks, the application should invoke sqlite3_free() on error message strings returned through the 5th parameter of of sqlite3_exec() after the error message string is no longer needed.

关于iphone - sqlite3_exec是否存在内存泄漏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4156962/

相关文章:

iphone - UIImagePicker 的内存问题

iphone - 构建后如何自动运行我的 iPhone 应用程序?

iphone - NSDecimalNumber 和从末尾弹出数字

javascript - angularjs 1.5 : How to identify what is getting leaked and fix the leak?

c++ - 在 std::shared_ptr 上使用 .reset() 是否会删除所有实例

android - ContentProvider android权限

ios - Admob 广告卡住了我的 iOS 游戏 (SpriteKit)

ios - 泄漏内存工具在分配属性时无法检测到泄漏,那么,泄漏内存是否是泄漏内存?

mysql - 将多个结果合并为列

ios - 如何从 sqlite 文件生成 objective-c 类