标签: c
我是C的新手。
int a = 1, b = 2; int *p = &a;
当threadA将指针p从指向a更改为指向b时,同时另一个threadB正在读取指针p,什么值可以是threadB读?它可能是一个破碎的值(既不是1也不是2)?
p
a
b
答案 0 :(得分:0)
在实践中,对指针的写入在流行的现代平台上是原子的,如果指针存储是对齐的,则 在你的情况下,指针在堆栈上分配。如果指针存储在堆上,则需要确保以正确的对齐方式存储它。
理论上,不,它不安全。