1
在TC散列數據庫中插入大約8百萬條記錄後,我陷入了分段錯誤。一切都被插入後,我關閉數據庫,但我的代碼(tchdb.c)的這部分陷入分段錯誤:TokyoCabinet:hdb-> close()的分段錯誤
static void tchdbsetflag(TCHDB *hdb, int flag, bool sign){
assert(hdb);
char *fp = (char *)hdb->map + HDBFLAGSOFF;
if(sign){
*fp |= (uint8_t)flag; //SEGFAULT HERE!
} else {
*fp &= ~(uint8_t)flag;
}
hdb->flags = *fp;
}
更多especifically在註釋行。
的DB打開這樣的:
tchdbopen(hdb, db_file, HDBOWRITER | HDBOCREAT))
的DB是tunned有:
tchdbtune(hdb, 25000000, -1, -1, HDBTLARGE);
tchdbsetcache(hdb, 100000);
的.tch文件大約2GB(2147483647個字節)。有趣的是,只有當我插入大約800萬條記錄時纔會發生這種情況。有2或3百萬的DB關閉。插入800萬條記錄需要大約3個小時,因爲我從文本文件中讀取數據。
任何想法?
謝謝