我们的代码涉及一个POD(普通旧数据结构)结构(这是一个基本的c ++结构,其中包含其他结构和POD变量,需要在开始时对其进行初始化。)
根据我所读的文章,似乎:
myStruct = (MyStruct*)calloc(1, sizeof(MyStruct));
应该将所有值初始化为零,如下所示:
myStruct = new MyStruct();
但是,当用第二种方法初始化该结构时,Valgrind随后抱怨说,当使用这些变量时,“条件跳转或移动取决于未初始化的值”。我的理解是否存在缺陷,还是Valgrind抛出假阳性?
new MyStruct()
在C ++ 03中不需要设置任何填充字节。在C ++ 0x中是。在C ++ 0x中,任何填充位都将设置为0。