2011-05-26 90 views
4

我正在使用下面的代碼片段添加新的元素/行的名稱爲Sqlite3數據庫,每件事情都很好,但這是每次給我內存泄漏,當我調用此函數,可以任何一個幫助我如何避免這個問題?Xcode內存泄漏時使用SQLite3 API

{ 

    sqlite3 *database; 

sqlite3_stmt *addStmt; 
    NSString *[email protected]"Enter your Notes here"; 

if(sqlite3_open([databasePath UTF8String], &database) == SQLITE_OK) 
{ 
    const char *sql = "insert into database(name) Values(?)"; 
    if(sqlite3_prepare_v2(database, sql, -1, &addStmt, NULL) == SQLITE_OK) 
    { 

    sqlite3_bind_text(addStmt, 1, [localName UTF8String], -1, SQLITE_TRANSIENT); 


    if(SQLITE_DONE != sqlite3_step(addStmt)) 
     NSAssert1(0, @"Error while inserting data. '%s'", sqlite3_errmsg(database)); 
    else 
     //SQLite provides a method to get the last primary key inserted by using sqlite3_last_insert_rowid 
     NSLog(@"id=====%d",sqlite3_last_insert_rowid(database)); 

    //Reset the add statement. 
    sqlite3_reset(addStmt); 


    } 

     } 
    sqlite3_close(database); 
} 
+0

Xcode,不是xCode – Manni 2011-05-26 06:55:24

回答

2

你應該完成你不再使用任何事先準備好的聲明:

sqlite3_finalize(addStmt), addStmt = nil; 

有沒有真正的需要將指針設置爲nil我真正喜歡它。