分段错误mongoc_cursor_next BSON_ASSERT
Segmentation fault mongoc_cursor_next BSON_ASSERT
我正在尝试让 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;
相关文章:
- 如何在 assert() 和 static_assert() 之间调度,如果在 constexpr 上下文中依赖?
- 我关于函数"Assert"的C++代码有问题
- assert() 在发布模式下充当标识函数吗?
- 如何编写一个接受如下断言消息的自定义断言函数:assert(false) << "assertio
- 使用 mongo c++ 驱动程序查询嵌套的 BSON 文档
- 我可以禁用 GCC 的 assert() 的 noreturn 属性吗?
- 能够使用debug.assert()函数需要什么
- BSONCXX-是否有一种方法可以通过.bson转储文件中的文档进行迭代
- (公开简历)ASSERT: "false" in file qasciikey.cpp
- MongoC ++驱动程序BSON构造:基于流与基于字符串解析.哪一个性能更好?
- ASSERT: "allArguments.size() == origArgc"
- Qt5 - ASSERT: "bytesTransferred == writeChunkBuffer.size()"
- VS2017 MFC Assert: f:ddvctoolsvc7libsshipatlmfcinclude
- C++ EXPECT_EQ & ASSERT inside for loop
- 为什么 MonitoringManager::OnRequestSucceeded() 中的 assert(s_moni
- 如何正确调用 Assert::ExpectException
- 带有MongoDB C 驱动程序的BSON文档中的鳍
- 使用 assert 帮助编译器更好地优化
- 自定义"assert"宏,支持逗号和错误消息
- 是否可以有一个零成本assert(),这样代码就不必在调试和发布版本之间进行修改