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 |
fd=-1
とし、fd==-1
の場合には close() しないようにする。ulimit -n
コマンドで確認および設定可能。一般/特権ユーザが設定可能な上限は、それぞれ ulimit -Sn
、ulimit -Hn
コマンドで確認できる。cat /proc/${PID}/limits | grep "open file"
で確認できる。sudo ls -l /proc/${PID}/fd
で確認できる。実行環境により挙動が異なる可能性があるため、実際の挙動を確認するためのコード集。
apt install cmake
などでbuild (cmake は省略可)
cd src/build
cmake ..
make
確認用コードの実行
../check_behavior.sh
add_executable(<binary_name_name>, <source_file_name>)
を追加rm ./CMakeCache.txt
CMake Error: The current CMakeCache.txt directory ... is different than