使用多线程(/ MT)编译时崩溃

时间:2016-04-21 08:09:32

标签: c++ multithreading visual-studio-2015 crash leveldb

我是leveldb的新手。我尝试编译用于​​在Visual Studio 2015中创建leveldb的c ++代码。我尝试使用两种不同的代码生成选项编译代码。

要更改属性: 项目 - >配置属性 - > C / C ++ - >代码生成

这是我的整个代码

#include <iostream>
#include "leveldb/db.h"
#include <memory>
using namespace std;

int main(int argc, char** argv)
{
    leveldb::DB* db;
    leveldb::Options options;
    options.create_if_missing = true;
    //options.error_if_exists = true;
    /*This is the line where it crashes*/
    leveldb::Status status = leveldb::DB::Open(options, "E:\\testdb\\level2", &db);
    /*This is the line where it crashes*/
    if (!status.ok()) 
    {
        cerr << status.ToString() << endl;
    }
    else
    {
        cout << "Created successfully" << endl;
    }

    for (int i = 0; i < 1000000; i++)
    {
        status = db->Put(leveldb::WriteOptions(), to_string(i), to_string(i));
    }
    delete db;
    return 0;
}

以下是我的两个案例的结果

案例:1

运行时库 - &gt;多线程DLL(/ MD)

结果:

代码编译成功,我可以看到我的代码成功执行并创建了数据库

案例:2

运行时库 - &gt;多线程(/ MT)

结果:

代码编译成功。但是只要它试图打开数据库,exe就会崩溃

下面是我的exe崩溃的行

leveldb ::状态status = leveldb :: DB :: Open(选项,“E:\\ testdb \\ level2”,&amp; db);

0 个答案:

没有答案