Our code involves a POD (Plain Old Datastructure) struct (it is a basic c++ struct that has other structs and POD variables in it that needs to get initialized in the beginning.) 

Based one what I've [read](https://stackoverflow.com/questions/2951586/default-struct-initialization-in-c), it seems that:

```
myStruct = (MyStruct*)calloc(1, sizeof(MyStruct));

```

should initialize all the values to zero, as does:

```
myStruct = new MyStruct();

```

However, when the struct is initialized in the second way, Valgrind later complains "conditional jump or move depends on uninitialised value(s)" when those variables are used. Is my understanding flawed here, or is Valgrind throwing false positives?