Утечка памяти XCode при использовании API SQLite3 - PullRequest
4 голосов
/ 26 мая 2011

Я использую следующий фрагмент кода, чтобы добавить новый элемент / строку с именем в базу данных Sqlite3, Все работает нормально, Но это вызывает утечки памяти каждый раз, когда я вызываю эту функцию, Может ли кто-нибудь помочь мне, как избежать эта проблема?

{

    sqlite3 *database;

sqlite3_stmt *addStmt;
    NSString *localdescription=@"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);
}

1 Ответ

2 голосов
/ 26 мая 2011

Вы должны завершить любое подготовленное утверждение, которое больше не используете:

sqlite3_finalize(addStmt), addStmt = nil;

Нет реальной необходимости устанавливать указатель на ноль, мне просто очень нравится.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...