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) );
有帮助吗?

解决方案

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.

其他提示

No, You should initialize pointer ptr and nptr with NULL. And declare nptr before for loop. your code should be like:

#include<stdio.h>
#include<stdlib.h>
void main()
{
        int *ptr=NULL, i, num=5;
        void *nptr=NULL;
        for (i=0; i<num; i++)
        {
                nptr = realloc (ptr, (i+1) * sizeof(int) );
                if (NULL != nptr)
                    ptr = nptr;
        }
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top