我正在尝试让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);
}
答案 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;