这种realloc的使用是否正确?

syn*_*nth 4 c realloc alloc

原始问题

我可以使用realloc()如下代码的函数:

int *ptr, i, num=5;

for (i=0; i<num; i++)
  void *nptr = realloc (ptr, (i+1) * sizeof(int) );
Run Code Online (Sandbox Code Playgroud)

Jen*_*edt 6

不,您应该ptr在开头初始化然后分配新值

int *ptr = 0;

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

否则,在第一次调用时,您可以传递一些随机值realloc.并且您在后续调用中分配的内存将丢失.