Unique Pointer Implementation C