malloc使用时的三点注意事项

  • 如果准备使用已经存在的指针接收malloc申请的空间首地址,首先应该判断指针是否为NULL,如果不是NULL,有可能此指针指向一块正在使用的空间,建议先检查指针指向的内容是否有用,是否需要先释放指向的内容。
  • 申请malloc之后,需要进行判断malloc是否申请成功,如果未申请成功,malloc会返回NULL,可以使用这个作为判断的依据。
  • 在使用free释放malloc申请的空间时,需要将指针指向NULL,避免出现野指针。
    void GetMemory(char **p, int num){
      if(num<=0)
          printf("申请的内存空间要大于零!\n");
      if(*p != NULL)
          printf("此空间可能正在使用,请检查!\n");
      *p = (char*)malloc(num);
      if(*p==NULL)
          printf("申请内存失败!\n");
    }
    void test(){
      char *str = NULL;
      GetMemorty(&str, 100);
      strcpy(str, "hello world");
      printf("%s\n", str);
      free(str);
      str = NULL;
    }
    // 此段程序转自牛客网:https://www.nowcoder.com/questionTerminal/be0af78fc03848aea1944805dda810ce中woooooody的回答