Realloc on NULL-valued (or undefined) pointer

c, realloc, undefined-behavior

Solution

Is there any danger in allocating memory with realloc using the initially NULL-valued ptr

None

7.22.3.5

If ptr is a null pointer, the realloc function behaves like the malloc function for the specified size.

For the second part:

int* ptr; // no value given to ptr

would it be a problem to call realloc using ptr?

If you're using uninitialized pointers then that is a very serious problem indeed since you can't predict what their value will be. The function `realloc` only works correctly for `NULL` or values obtained from `malloc` / `realloc`.

Otherwise, if ptr does not match a pointer earlier returned by a memory management function [...] the behavior is undefined

Problem

I was reading about `realloc` and got confused about a point mentioned there. Consider the code below: ``` #include <stdio.h> #include <stdlib.h> int main () { int* ptr = NULL; ptr = realloc(ptr, 10*sizeof(int)); return 0; } ``` Is there any danger in allocating memory with `realloc` using the initially `NULL`-valued `ptr`? If instead of: ``` int* ptr = NULL; ``` I had this: ``` int* ptr; // no value given to ptr ``` would it be a problem to call `realloc` using `ptr`?

Original source