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