分段错误mongoc_cursor_next BSON_ASSERT

时间:2014-12-21 17:51:15

标签: c++ mongodb

我正在尝试让mongoDb c驱动程序运行 当我调用语句mongoc_cursor_next时,代码崩溃并出现Segmentation fault。原因在于函数的源代码,即BSON_ASSERT(bson)。这是没有意义的。请有人告诉我如何init const bson_t** bson正确。

const Bson* bson; 
while(!mongoc_cursor_error(cursor, &DbWrapper::error) && mongoc_cursor_more(cursor) && mongoc_cursor_next(cursor, &bson)) 
{
    JsonValue* jsonValue = NULL; 
    (*jsonValue) = DbWrapper::convertBsonToJsonValue(bson); 
    payloadList.push_back(jsonValue); 
}

1 个答案:

答案 0 :(得分:0)

首先,这不是C,它是C ++,你的问题非常明显,你在这里取消引用NULL指针

JsonValue* jsonValue = NULL;
(*jsonValue) = DbWrapper::convertBsonToJsonValue(bson); 

这会导致分段错误,你应该这样做

JsonValue jsonValue;
jsonValue = DbWrapper::convertBsonToJsonValue(bson); 

问题是将其附加到payloadList向量,可能是您应该这样声明

std::vector<JsonValue> payloadList;

而不是

std::vector<JsonValue *> payloadList;