Пусть следующий код:Что произойдет, если pthread_key_delete вызывается на ключ после неудачного pthread_key_create?
pthread_key_t key;
pthread_key_create(&key, NULL); /* failure here */
pthread_key_delete(key);
Если pthread_key_create
неудачна, вызов pthread_key_delete
считается неопределенное поведение? Как насчет того, если pthread_key_create
закомментирован?
pthread_key_delete часть стандартных состояний POSIX: функция
pthread_key_delete() должен удалить нити специального ключа данных ранее возвращенное pthread_key_create().
С pthread_key_delete
ожидает нить данные по конкретным ключевым ранее вернулся по pthread_key_create
, боюсь, называя pthread_key_delete
на ключ, который не был возвращен pthread_key_create
может привести к непредсказуемому поведению.
О, боже мой, я просто понял, что прочитал старшую * Проблема 6 *, тогда как я намеревался прочитать более актуальную * Выпуск 7 *. В следующий раз я должен следить. –
@VilhelmGray, справедливо. Я бы сказал, что это одно и то же неопределенное поведение в том, что SUSv7 более откровенен в этом. – pilcrow
Да, я считаю, что, вероятно, в решении явно указать, что в таких случаях существует неопределенное поведение. –