2009-11-19 5 views
0

내가 아주 이상한 메모리 누수 문제가, 그 sqlite3_step 일부 불쾌한 물건을하고있는 것 같습니다 : |이상한 아이폰 SDK가 sqlite 메모리 누수가

나는 그것이 코드는이 문제를 해결하기 위해 노력하고 약 4 시간 소요하지만 운이 지금까지 :(여기

:

문제는 난을 제거하면, 내 쿼리 것 같다
[dbList removeAllObjects]; 

sqlite3_stmt *statement = nil; 
const char *sql = "SELECT * FROM dbs ORDER by rowOrder;"; 
if (sqlite3_prepare_v2(dbHandler, sql, -1, &statement, NULL) == SQLITE_OK) 
{  
    while (sqlite3_step(statement) == SQLITE_ROW) 
    { 

     DatabaseEntry *entry = [[DatabaseEntry alloc] init]; 

     entry.databaseID = sqlite3_column_int(statement, 0); 
     entry.databaseTitle = [NSString stringWithFormat:@"%s", (char *)sqlite3_column_text(statement, 1)]; 
     entry.databaseProtected = sqlite3_column_int(statement, 3); 
     entry.databaseFileName = [NSString stringWithFormat:@"%s", (char *)sqlite3_column_text(statement, 2)]; 
     entry.databaseOrder = sqlite3_column_double(statement, 4); 

     [dbList addObject:entry]; 
     [entry release]; 
    } 

} 
sqlite3_finalize(statement); 

"ORDER은 rowOrder에 의해"부분, 모든 또한 내가 sqlcipher을 사용하고, 잘 할 것, 그리고 나는이 누수가 발생할 수 있습니다 경우 궁금하네요?!

덕분에 많은 관심을 가져!

답변

2

업데이트 : 안녕, 앤디, 내가 틀렸다. 나는 Leaks에서 몇 가지 시나리오를 실행 한 후이 문제를보다 자세히 조사하기 시작했습니다. 그것은 업스트림 SQLite 소스에서 잘못된 병합이 두 개의 호출기 정리 호출을 놓친 것 같습니다. 이 문제로 인해 호출기가 닫힌 후에도 페이지 캐시가 할당 된 채로 남아있었습니다. 아마 대부분의 프로그램에는 영향을 미치지 않지만 GitHub에서 최신 소스 코드를 풀어내는 것이 좋습니다. http://github.com/sjlombardo/sqlcipher

+0

흠, 정말 고맙습니다. 고마워요! – Andy

+0

고마워, 나는 새로운 소스 코드를 잡을 것이다! 감사합니다. – Andy

관련 문제