Code Fix

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

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

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

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

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

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

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

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

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