メモリを二重/多重で開放してはいけない
二重開放/多重開放してはいけない理由についての詳しい理由
mallocしたものを二重でfree()したときどうなるか
解放されたメモリに再びアクセスしてときに返ってくる値は不定で、何が返ってくるかはわからない
C言語上は未定義動作
意図しないメモリを変更してしまうことがある
解放した領域にはNULLを詰めておくと二重開放してしまっても安全らしい
code:c
char *message;
int message_type;
/* message と message_type を初期化 */
if (message_type == value_1) {
/* message type 1 を処理 */
free(message);
message = NULL;
}
/* ...*/
if (message_type == value_2) {
/* message type 2 を処理 */
free(message);
message = NULL;
}
参考
メモ