c-resource-mgmt

C言語の小ネタ集


Project maintained by KazKobara Hosted on GitHub Pages — Theme by mattgraham

C言語における資源解放時の微妙な違い

必要な背景知識

必須

余裕があれば

資源解放時の微妙な違いのまとめ

以下の表の挙動は以下の環境のもの

  Linux 5.4.72-microsoft-standard-WSL2 #1 SMP Wed Oct 28 23:40:43 UTC 2020 x86_64
  cmake version 3.16.3
  gcc (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0
function double release (double free etc.) null release 戻り値 Note
free() NG OK  
fclose() NG NG *3
close() NG*1 NG*2 *3、*4

確認用コード

実行環境により挙動が異なる可能性があるため、実際の挙動を確認するためのコード集。

使い方

  1. cmake のインストール
    • apt install cmake などで
  2. build (cmake は省略可)

     cd src/build
     cmake ..
     make
    
  3. 確認用コードの実行

     ../check_behavior.sh
    

チェックプログラムを追加した場合

  1. CMakeLists.txt に add_executable(<binary_name_name>, <source_file_name>) を追加

Troubleshooting

cmake で以下のようなエラーが出る場合は rm ./CMakeCache.txt

CMake Error: The current CMakeCache.txt directory ...  is different than

戻る