C++ != C ~= Lite-C

When you allocate dynamically a struct, you just reserve a certain memory block. This block is filled with previous data. With the zero macro you can simply reset everything to 0.

When you need special initialization values, write a function in a constructor fashion:

Code:
MyStruct* MyStructCreate() {
   
   MyStruct* s = (MyStruct*)malloc(sizeof(MyStruct));
   
   s->nr = 2;
   strcpy(s->charArray, "String");
   //...

   return(s);
}