2011-05-26 40 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我真正喜欢它。