我正在使用以下代码片段向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);
}
答案 0 :(得分:2)
您应该完成任何不再使用的准备好的声明:
sqlite3_finalize(addStmt), addStmt = nil;
没有必要将指针设置为nil我只是真的喜欢它。