In function free(p), p is a:
Answer: D
Correct answer: Both b & c
free accepts the pointer returned by malloc, by calloc or by realloc - one deallocation function serves all three, because all three draw on the same allocator.
What it will not accept is anything else: an address part-way into a block, an address of an automatic or static object, or a pointer already freed. Each of those is undefined behaviour, and a double free in particular corrupts the allocator's own bookkeeping.
Please log in or register to report this question.