For C? Probably calloc since it initializes memory to 0 which is free or next to free on modern systems. This allows you to design data structures such that a zero-initialized struct is an invariant and "uninitialized" structs allocated on the heap are not possible. This is not necessary in C++ since we have the new operator and construtors, but that can be useful in C.