草庐IT

adjVariable

全部标签

c++ - 与位域相邻的变量会损坏吗?

我面临的问题与Linux内核社区所描述的问题非常相似-BetrayedbyaBit-Field问题的本质是GCC发出64位读取访问甚至访问1位位域。这会导致读取相邻字段的意外副作用,这些副作用可以在程序的其他地方修改。当修改后的位域值被写回时,相邻变量的旧值也会被写回,从而丢失其他线程对其所做的任何修改。我的问题略有不同。我有一个这样的类/结构-classGroup{uint8adjVariable;volatileboolflag1:1;volatileboolflag2:1;//soon...volatileboolflag10:1;};访问这些变量的方式是——Group::fun

c++ - 与位域相邻的变量会损坏吗?

我面临的问题与Linux内核社区所描述的问题非常相似-BetrayedbyaBit-Field问题的本质是GCC发出64位读取访问甚至访问1位位域。这会导致读取相邻字段的意外副作用,这些副作用可以在程序的其他地方修改。当修改后的位域值被写回时,相邻变量的旧值也会被写回,从而丢失其他线程对其所做的任何修改。我的问题略有不同。我有一个这样的类/结构-classGroup{uint8adjVariable;volatileboolflag1:1;volatileboolflag2:1;//soon...volatileboolflag10:1;};访问这些变量的方式是——Group::fun