有人能总结一下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.  }

假设realloc()在第3行失败。我在网上做正确的事情吗?

最佳答案

http://www.c-faq.com/malloc/realloc.html
如果realloc根本找不到足够的空间,它将返回一个空指针,并保留以前分配的区域。
因此,您确实需要释放以前分配的内存。

关于c - 当realloc()失败并返回NULL时,它的正确用法是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3331221/

10-13 06:00