What happens when you try to free() already freed memory in c?

后端 未结 14 1041
天命终不由人
天命终不由人 2020-12-09 08:19

For example:

char * myString = malloc(sizeof(char)*STRING_BUFFER_SIZE);
free(myString);
free(myString);

Are there any adverse side effects

14条回答
  •  -上瘾入骨i
    2020-12-09 08:41

    Another interesting situation:

    char * myString = malloc(sizeof(char)*STRING_BUFFER_SIZE);
    char * yourString = myString;
    
    if (myString)
    {
        free(myString);
        myString = NULL;
    }
    // Now this one is safe, because we keep to the rule for 
    // setting pointers to NULL after deletion ...
    if (myString)
    {
        free(myString);
        myString = NULL;
    }
    
    // But what about this one:
    if (yourString)
    {
        free(yourString);
        yourString = NULL;
    }
    
    //?!? :)
    

提交回复
热议问题