-1

我正在尝试在 RocksDB 上插入 1 亿条记录,但在 287481 插入此行之后出现 SIGSEGV:Segmentation 错误:

0   ??  /lib/x86_64-linux-gnu/libc.so.6     0x7ffff6086341  
1   rocksdb::Slice::Slice   slice.h 43  0x40efd5    
2   main    main.cpp    75  0x40e857    

这是代码:

int main(int argc, char *argv[]) {
   rocksdb::DB *db;
   rocksdb::Options options;
   options.create_if_missing=true;
   rocksdb::Status status = rocksdb::DB::Open(options,"/tmp/testdb1",&db);
   assert(status.ok());
   for (long var = 0; var < 100000000L; ++var) {
       db->Put(rocksdb::WriteOptions(),""+var,"v"+var);
       qDebug()<<var;
   }
}

谢谢你的帮助。

4

1 回答 1

1

您不应该添加“k”(const char*)和 var(long)。请像这样构造字符串:

std::string key("k" + std::to_string(var));

价值也是一样的。

于 2014-10-22T16:36:03.993 回答