2010-11-11 92 views
1

我正在使用SQLite來存儲我的數據。我正在編寫包裝類,我想知道:如果(res!= SQLITE_OK)和errorMsg將顯示在屏幕上,將會發生內存泄漏?sqlite3_exec是否有內存泄漏?

所以我需要做免費(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; 
} 

回答

4

您應該使用sqlite3_free()發佈錯誤消息字符串,按the documentation

爲了避免內存泄漏,應用程序 應該在錯誤 消息字符串調用sqlite3_free()通過 返回sqlite3_exec() 的第5個參數在錯誤消息字符串沒有 之後需要更長的時間。