O que significa "duplo grátis"?

Como o título sugere, sou novo em C e tenho um intercalar em breve. Atualmente, estou revisando artigos anteriores e um tema recorrente é o dobro do problema. Eu entendo que é o processo de chamarfree() no mesmo local de memória duas vezes, mas tenho algumas perguntas que não tenho 100% de certeza sobre como responder:

Pergunta 1: Qual é o resultado de um duplo livre em C e por que é esse problema?

Isso causará um duplo livre:

char* ptr = malloc(sizeof(char));

*ptr = 'a';
free(ptr);
free(ptr);

Minha resposta a isso seria: ele retornaria um endereço de memória 0x0 e causaria uma instabilidade / falha no sistema. Além disso, se bem me lembro, um duplo grátis pode realmente chamarmalloc duas vezes, o que resulta em um estouro de buffer, deixando o sistema vulnerável.

Qual seria a melhor maneira de resumir brevemente essa pergunta?

Pergunta 2: Descreva uma situação em que é particularmente fácil introduzir um duplo livre em C?

Eu estava pensando que, ao passar os ponteiros ao seu redor, acidentalmente liberá-lo em uma função e liberá-lo novamente sem perceber?

Novamente, qual é a "melhor" maneira de resumir isso?

questionAnswers(4)

yourAnswerToTheQuestion