【发布时间】:2013-08-05 18:02:57
【问题描述】:
假设如下代码:
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_create 未返回的键上调用pthread_key_delete 会导致未定义的行为。
【问题讨论】:
标签: pthreads posix pthread-key-create