Will the free()
routine work if I dynamically allocate an array and then pass, not the initial pointer, but a pointer to the middle of the array? Example:
Absolutely not. The value passed to free()
must be exactly the same value returned by malloc()
. In fact, to ensure this is the case, I would recommend you use a copy of the pointer if you need a pointer you can increment or otherwise modify.
(And "Yes", you do need to "set it back".)
The API requires that you only pass to free()
exactly what you got from malloc
()1.
1. Or a null pointer.