次のコードがあるとします。
pthread_key_t key;
pthread_key_create(&key, NULL); /* failure here */
pthread_key_delete(key);
失敗した場合pthread_key_create
、呼び出しは未定義の動作pthread_key_delete
と見なされますか? コメントアウトしたらどうですか?pthread_key_create
POSIX 標準のpthread_key_deleteセクションには、次のように記載されています。
pthread_key_delete() 関数は、以前に pthread_key_create() によって返されたスレッド固有のデータ キーを削除します。
は以前に によって返されpthread_key_delete
たスレッド固有のデータ キーを想定しているため、 によって返されなかったキーを呼び出すと、未定義の動作が発生する可能性があります。pthread_key_create
pthread_key_delete
pthread_key_create