gpt4 book ai didi

pthreads - 如果在 pthread_key_create 失败后对某个键调用 pthread_key_delete 会发生什么情况?

转载 作者:行者123 更新时间:2023-12-02 21:54:10 25 4
gpt4 key购买 nike

假设有以下代码:

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 标准的部分规定:

The pthread_key_delete() function shall delete a thread-specific data key previously returned by pthread_key_create().

由于 pthread_key_delete 需要 pthread_key_create先前返回线程特定的数据 key ,因此恐怕会调用 pthread_key_delete > 在 pthread_key_create 未返回的键上可能会导致未定义的行为。

最佳答案

是的,这是隐式未定义的行为,就您链接的标准没有定义该用例中发生的情况而言。

然而,SUSv7 在其对 pthread_key_delete 的讨论中是明确的,在其 CHANGE HISTORY for Issue 7 中明确表示。那:

The [EINVAL] error for a key value not obtained from pthread_key_create() or a key deleted with pthread_key_delete() is removed; this condition results in undefined behavior.

关于pthreads - 如果在 pthread_key_create 失败后对某个键调用 pthread_key_delete 会发生什么情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18064682/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com