Why not have the caller simply declare a Configuration object (instead of a pointer to one) and pass its Configuration* address ?  We can clear it with memset, fill its non-zero fields as initialization here and we'd save a bunch of heap traffic (and associated checking).