C++ RocksDB:引发未处理的异常:读取访问冲突

C++ RocksDB:引发未处理的异常:读取访问冲突,c++,visual-studio-2017,windows-10,rocksdb,C++,Visual Studio 2017,Windows 10,Rocksdb,我有一个简单的rocksdb程序,在这个程序中,我创建了一个数据库,并使用事务将一些值放入其中 using namespace rocksdb; std::string kDBPath = "D:\\Newdata"; int main() { // open DB Options options; TransactionDBOptions txn_db_options; options.create_if_missing = true; Transac

我有一个简单的
rocksdb
程序,在这个程序中,我创建了一个数据库,并使用事务将一些值放入其中

using namespace rocksdb;

std::string kDBPath = "D:\\Newdata";
int main() {
    // open DB
    Options options;
    TransactionDBOptions txn_db_options;
    options.create_if_missing = true;
    TransactionDB* txn_db;

    Status s = TransactionDB::Open(options, txn_db_options, kDBPath, &txn_db);
    assert(s.ok());

    WriteOptions write_options;
    ReadOptions read_options;
    TransactionOptions txn_options;
    std::string value;

    ////////////////////////////////////////////////////////
    //
    // Simple Transaction Example ("Read Committed")
    //
    ////////////////////////////////////////////////////////

    // Start a transaction
    Transaction* txn = txn_db->BeginTransaction(write_options);
    assert(txn);

    // Read a key in this transaction
    //s = txn->Get(read_options, "abc", &value);
    //assert(s.IsNotFound());

    // Write a key in this transaction
    s = txn->Put("abc", "def");
    assert(s.ok());

    // Read a key OUTSIDE this transaction. Does not affect txn.
    s = txn_db->Get(read_options, "abc", &value);
    assert(s.IsNotFound());

    // Write a key OUTSIDE of this transaction.
    // Does not affect txn since this is an unrelated key.
    s = txn_db->Put(write_options, "xyz", "zzz");
    assert(s.ok());

    // Write a key OUTSIDE of this transaction.
    // Fail because the key conflicts with the key written in txn.
    s = txn_db->Put(write_options, "abc", "def");
    assert(s.subcode() == Status::kLockTimeout);

    // Value for key "xyz" has been committed, can be read in txn.
    s = txn->Get(read_options, "xyz", &value);
    assert(s.ok());
    assert(value == "zzz");

    // Commit transaction
    s = txn->Commit();
    assert(s.ok());
    std::cout << "End program";
    return 0;
}
使用VS进行调试显示
txn
名称
字段的
。 在VS更新之前,相同的程序运行良好

Exception thrown at 0x00007FF7FCAD0D84 in Rocksdbtest.exe: 0xC0000005: Access violation reading location 0xFFFFFFFFFFFFFFFF.
Unhandled exception thrown: read access violation.
txn->**** was 0xFFFFFFFFFFFFFF27.