假设以下代码:
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