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