每日一题(23)——malloc与free(四)

来源:互联网 发布:windows office 2013 编辑:程序博客网 时间:2024/06/04 01:01
void Test(void){  char *str = (char *)malloc(100);    strcpy(str, "hello");    free(str);    if(str != NULL)  {    strcpy(str, "world");    printf(str);  }}

1、指出编程错误
2、指出错误后果

3、指出纠正方法






分析:

    篡改动态内存区的内容,后果难以预料,非常危险;因为free(str)之后,str成为野指针,

    if(str != NULL)语句不起作用;

    将free(str);放在Test最后,处理完成之后再释放。

void Test(void){  char *str = (char *)malloc(100);  strcpy(str, "hello");  if(str != NULL)  {    strcpy(str, "world");    printf(str);  }    free(str);}