c语言realloc分配

发布网友 发布时间:2022-04-01 08:29

我来回答

1个回答

热心网友 时间:2022-04-01 09:59

 原型:extern void *realloc(void *ptr, size_t newsize);
  用法:#include <stdlib.h>
  功能:改变ptr所指内存区域的大小为newsize长度。
  说明:如果重新分配成功则返回指向被分配内存的指针,否则返回空指针NULL。
  当内存不再使用时,应使用free()函数将内存块释放。
  示例:
  #include <stdio.h>
  #include <stdlib.h>
  int main(int argc, char **argv)
  {
  char *p;
  p = (char *)malloc(100);
  if(p)
  printf("Memory Allocated at:%p\n", p);
  else
  printf("Not Enough Memory!\n");
  p = (char *)realloc(p, 256);
  if(p)
  printf("Memory Reallocated at:%p\n", p);
  else
  printf("Not Enough Memory!\n");
  free(p);
  return 0;
  }
  延伸:通常,realloc的用法会如下:
  p = realloc(p, new_size);
  if (p == NULL) {
  return;
  }
  如果realloc()失败,ptr指向的这块内存不会变化,不会free或者移动。也就是说,如果realloc()失败了,照着上面代码的写法,这块内存就被永远遗忘。
  tmp = realloc(p, new_size);
  if (tmp == NULL) {
  free(p);
  return;
  }
  p = tmp;

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com