当我尝试执行我的功能时,我会从我的“内存”中注明消息为什么? 我看到Step1和Error - 内存不足
- (BOOL)updateLocationsAndSetFlag:(UserLocation *)location {
if (sqlite3_open([sqLiteDb UTF8String], &_database) == SQLITE_OK) {
const char *sqlStatement = "update locations set flag = 1 where locations.uniqueId = ?;";
sqlite3_stmt *compiledStatement;
NSLog(@"step 1");
if (sqlite3_prepare_v2(_database, sqlStatement, -1, &compiledStatement, NULL) == SQLITE_OK) {
NSLog(@"step 2");
} else
NSLog(@"Error is %s", sqlite3_errmsg((__bridge sqlite3 *) (database)));// in this part we can see Error is out of memory
}
return YES;
答案 0 :(得分:1)
您看到“内存不足”错误,因为您使用_database
填充sqlite3_open
,但是当您致电时,您正在引用其他实例变量database
sqlite3_errmsg()
。其他sqlite3
指针显然仍为NULL
,每当您使用sqlite3_errmsg()
数据库指针调用NULL
时,它都会报告误导性的“内存不足”消息。