struct A {
A() : a(0), b_1(0), b_2(0), c(0) {}
int a=0;
int b_1: 9;
int b_2: 23;
int c=0;
};
void func1(int i, int j, int k) { //<<<< valgrind error at this line.
}
void func2() {
int aa = 11;
int cc = 12;
A a;
a.b_2 = -1;
func1(2, a.b_2, cc );
}
Моя программа имеет что-то вроде этого. Я получаю ошибку valgrind, как показано ниже:
==25167== Uninitialised value was created by a stack allocation
==25167== at 0x122A00E9: func1(int, int, int)
Я подозреваю, потому что a.b_2
- это 23 бита, и мы назначаем его 32-битному целому числу j
, это вызывает ошибку неинициализированных байтов?
Может ли это -1 потерять свое значение при назначении j?
это правильно?