Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
valgrind使用使用GENOID创建的简单BSON对象报告BSONObj::toString中未初始化的值 使用ValGRND从MangoDB的C++驱动程序中的一个非常简单的例子中,当我们在BSONOBJ的定义中明确使用类图时,似乎出现了错误。下面是一个说明问题的示例: (在GCC 4.4.5上测试,Boost 1.42,Debian 6,MangoDB C++驱动程序2.2)< /P> #包括 #包括 #包括“mongo/db/jsobj.h” main() { mongo::BSONObj p=BSON(mongo::GENOID_C++_Mongodb_Bson - Fatal编程技术网

valgrind使用使用GENOID创建的简单BSON对象报告BSONObj::toString中未初始化的值 使用ValGRND从MangoDB的C++驱动程序中的一个非常简单的例子中,当我们在BSONOBJ的定义中明确使用类图时,似乎出现了错误。下面是一个说明问题的示例: (在GCC 4.4.5上测试,Boost 1.42,Debian 6,MangoDB C++驱动程序2.2)< /P> #包括 #包括 #包括“mongo/db/jsobj.h” main() { mongo::BSONObj p=BSON(mongo::GENOID

valgrind使用使用GENOID创建的简单BSON对象报告BSONObj::toString中未初始化的值 使用ValGRND从MangoDB的C++驱动程序中的一个非常简单的例子中,当我们在BSONOBJ的定义中明确使用类图时,似乎出现了错误。下面是一个说明问题的示例: (在GCC 4.4.5上测试,Boost 1.42,Debian 6,MangoDB C++驱动程序2.2)< /P> #包括 #包括 #包括“mongo/db/jsobj.h” main() { mongo::BSONObj p=BSON(mongo::GENOID,c++,mongodb,bson,C++,Mongodb,Bson,在与mongodb团队仔细审查之后,mongodb代码似乎没有问题。我怀疑oid.h中使用的联合中存在结构对齐问题,但它与#pragma pack(1)指令正确对齐 我倾向于认为这是valgrind的一个误报,因为mongo::OID类定义中使用的结构并集的结构并不简单。如果有人能重现这个问题并找出一个明确的答案,我会感兴趣的。谢谢!在与mongodb团队仔细审查之后,似乎没有什么可以解释的mongodb代码有误。我怀疑oid.h中使用的联合中存在结构对齐问题,但它与#pragma pack(1

在与mongodb团队仔细审查之后,mongodb代码似乎没有问题。我怀疑oid.h中使用的联合中存在结构对齐问题,但它与#pragma pack(1)指令正确对齐


我倾向于认为这是valgrind的一个误报,因为mongo::OID类定义中使用的结构并集的结构并不简单。如果有人能重现这个问题并找出一个明确的答案,我会感兴趣的。谢谢!

在与mongodb团队仔细审查之后,似乎没有什么可以解释的mongodb代码有误。我怀疑oid.h中使用的联合中存在结构对齐问题,但它与#pragma pack(1)指令正确对齐


我倾向于认为这是valgrind的一个误报,因为mongo::OID类定义中使用的结构并集的结构并不简单。如果有人能重现这个问题并找出一个明确的答案,我会很感兴趣。谢谢!

如果运行这段代码会发生什么?问题与否?还有valgrind的哪个版本这是吗?valgrind 3.6.0,debian 6 64位运行此代码会发生什么?问题还是否?这是什么版本的valgrind?valgrind 3.6.0,debian 6 64位
#include <cstdio>
#include <string>
#include "mongo/db/jsobj.h"

main()
{
  mongo::BSONObj p = BSON( mongo::GENOID << "name" << "Joe" << "age" << 33 );
  std::string s = p.toString();
  std::cout << s;
}
==2506== Use of uninitialised value of size 8
==2506==    at 0x40A66B: mongo::toHexLower(void const*, int) (hex.h:64)
==2506==    by 0x40A73F: mongo::OID::str() const (oid.h:66)
==2506==    by 0x40A798: mongo::operator<<(mongo::StringBuilderImpl<mongo::TrivialAllocator>&, mongo::OID const&) (oid.h:140)
==2506==    by 0x40DCC1: mongo::BSONElement::toString(mongo::StringBuilderImpl<mongo::TrivialAllocator>&, bool, bool, int) const (bson-inl.h:765)
==2506==    by 0x40C898: mongo::BSONObj::toString(mongo::StringBuilderImpl<mongo::TrivialAllocator>&, bool, bool, int) const (bson-inl.h:475)
==2506==    by 0x40C5A5: mongo::BSONObj::toString(bool, bool) const (bson-inl.h:445)
==2506==    by 0x40A1B8: main (mongobug.cc:10)