gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 04:55:32 30 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 返回的线程特定数据键,我害怕调用 pthread_key_deletepthread_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/

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