Code Fix

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

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

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

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

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

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

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

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

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