分段错误mongoc_cursor_next BSON_ASSERT

Segmentation fault mongoc_cursor_next BSON_ASSERT

本文关键字:BSON ASSERT next cursor mongoc 分段 错误      更新时间:2023-10-16

我正在尝试让 mongoDb c 驱动程序运行当我调用语句时,代码mongoc_cursor_next崩溃并出现分段错误。原因是在函数的源代码中,即 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); 
}

首先,这不是 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;