数据结构 / 内存的动态申请和释放

1.内存的动态申请 malloc

  • malloc 的头文件: #include <stdlib.h>
  • 格式: void *malloc(size_t size);
  • 参数:
    • size_t size: 申请堆区内存大小, 单位是字节;
    • size_t: 是数据类型, 是 unsigned long的宏定义的别名;
  • 返回值:
    • void *: 通用类型指针,使用时需要强转为具体的类型
  • 使用举例:
    • 单个变量内存分配:
      • int *p=(int *)malloca(sizeof(int));

    • 数组变量内存分配:
      • int arr[n];
        int *p=arr;
        int *p=(int *)malloc(sizeof(int)*n)

2内存的动态释放 free

  • malloc 的头文件: #include <stdlib.h>
  • 格式: void free(void *ptr);
  • 参数:
    • void *ptr: 释放内存的变量指针;
  • 返回值: 
  • 使用举例:
    • int *p=(int *)malloc(sizeof(int));
      free(p); // 堆区内存释放后, p 的指针指向还是原来的地址  
      p=NULL;  //p必须赋值NULL来防止野指针