当realloc()失败并返回NULL时,它的正确用法是什么?

bod*_*ydo 16 c memory realloc

任何人都可以总结出正确的用法是realloc()什么?

realloc()失败后你会怎么做?

从我到目前为止所看到的情况看来,如果realloc()失败,你必须使用free()旧指针.真的吗?

这是一个例子:

   1.  char *ptr = malloc(sizeof(*ptr) * 50);
   2.  ...
   3.  char *new_ptr = realloc(ptr, sizeof(*new_ptr) * 60);
   4.  if (!new_ptr) {
   5.      free(ptr);
   6.      return NULL;
   7.  }
Run Code Online (Sandbox Code Playgroud)

假设在线realloc()失败3.我做就行了正确的事情5free()荷兰国际集团ptr

Gia*_*ian 17

来自http://www.c-faq.com/malloc/realloc.html

如果realloc根本找不到足够的空间,它将返回一个空指针,并保留分配的前一个区域.

因此,您确实需要释放先前分配的内存.