指针数据在C中竞争

时间:2016-07-10 13:00:42

标签: c

我是C的新手。

int a = 1, b = 2;
int *p = &a;

当threadA将指针p从指向a更改为指向b时,同时另一个threadB正在读取指针p,什么值可以是threadB读?它可能是一个破碎的值(既不是1也不是2)?

1 个答案:

答案 0 :(得分:0)

在实践中,对指针的写入在流行的现代平台上是原子的,如果指针存储是对齐的,则 在你的情况下,指针在堆栈上分配。如果指针存储在堆上,则需要确保以正确的对齐方式存储它。

理论上,不,它不安全。