Search code examples
creallocalloc

Is this use of realloc correct?


Original question

Can I use realloc() function like the following code:

int *ptr, i, num=5;

for (i=0; i<num; i++)
  void *nptr = realloc (ptr, (i+1) * sizeof(int) );

Solution

  • no, you should initialize ptr at the beginning and then assign the new value

    int *ptr = 0;
    
    for (unsigned i=0; i<5; i++) {
      void *nptr = realloc (ptr, (i+1) * sizeof(int) );
      if (nptr) ptr = nptr;
      else abort();
    }
    

    Otherwise at the first call you could pass some random value to realloc. And the memory that you allocate in subsequent calls would simply be lost.