假设我有以下声明:
int* volatile x;
我相信这定义了一个可变指针“正常”变量。
对我来说,这可能意味着两件事之一:
第一个猜测
指针可以更改,但数字不会更改,恕不另行通知。这意味着其他一些线程(编译器不知道)可以更改指针,但如果旧指针指向“12”,那么新指针(指针的新值,因为线程会更改它) 将指向另一个“12”。
对我来说,这似乎毫无用处,我认为这不是真正的操作。
第二个猜测
指针可以改变,因此如果指针改变,编译器必须在使用它之前重新加载指针中的值。但是如果它验证指针没有改变(通过添加检查),它可以假设它指向的值也保持不变。
所以我的问题是:
声明一个指向非易失性数据的易失性指针实际上有什么作用?