次のコードがあるとします。
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_createpthread_key_deletepthread_key_create