Like, there's 2 ways a C lib can expect you to interact with a given pointer: 1) YOU are responsible for the memory. In such scenarios these procs must exist, otherwise you can't free them. Because you can't know how to free something somebody else allocated, you can't know which allocator they used etc., all of which is crucial information without which you can't do anything. Therefore the lib must have procs to free that pointer exposed for you. 2) Alternatively, you are not responsible for the memory. In that case you don't need to do anything and just pray you're using the pointer correctly