volatile
似乎是每个人一个永无止境的问题。我以为我什么都知道,但后来我遇到了这个:
所以,我在线程之间共享了一块内存,我这样定义它:
volatile type *name;
如果它让你感觉更好,你可以想象type
它只是一个int
.
这意味着我有一个指向一些易失性数据的指针(非易失性)。因此,例如在优化时,编译器可以缓存name
but not的值name[0]
。我对吗?
所以,现在我正在vfree
输入这个指针(它在 Linux 内核模块中),它告诉我在传递它时会vfree
期望。const void *
volatile type *
volatile type *
我了解将 a作为 a传递是多么危险,type *
因为在该函数中,name[i]
可以缓存的值(作为优化的结果),这是不可取的。
我不明白为什么,vfree
希望我向它发送一个指向非易失性数据的指针。那里有我想念的东西吗?还是只是写信的人vfree
没有考虑这种情况?
我假设我只是将指针指向void *
不会造成任何伤害,对吗?