Я пытаюсь вставить 100 миллионов записей на RocksDB, но я получаю SIGSEGV: Ошибка сегментации после 287481 вставки в этой строке:
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;
}
}
Спасибо за вашу помощь.
Вы не должны добавлять «k» (const char *) и var (long). Пожалуйста, сконструируйте строку следующим образом:
ключ std :: string («k» + std :: to_string (var));
И то же самое для ценности.