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的回答