Code Fix

上級free()した後のポインタを使っても動いてしまう(use-after-free) › パターン1

free()した後のポインタを使っても動いてしまう(use-after-free)

free()で解放したメモリに対して読み書きを続けても、多くの場合その場ではクラッシュせず、直前まで入っていた値がそのまま読めてしまいます。

 1  #include <stdio.h>
 2  #include <stdlib.h>
 3  
 4  int main(void) {
 5      int *p = malloc(sizeof(int));
 6      *p = 42;
 7      _________________
                ^
 8      printf("%d\n", *p);
 9      return 0;
10  }
出力: 42とは無関係な値(実行のたびに変わる)期待: 42

空欄を埋めてコンパイル・実行を通す

広告
広告スロット(未設定)

free()した後のポインタを使っても動いてしまう(use-after-free)

このエラーの解説と類題をまとめて見る →

広告
広告スロット(未設定)