free した領域をもう一度 free すると、メモリ管理の内部情報が壊れてクラッシュします。ポインタを2つの場所で管理しているときに起こりがちです。
出るコード
char *buf = malloc(10);
free(buf);
free(buf); // 二重に解放
エラーメッセージ
free(): double free detected in tcache 2
Aborted (core dumped)
直し方
free した直後にポインタへ NULL を代入します(free(buf); buf = NULL;)。NULL を free しても何も起きないので、二重解放を防げます。