at the breakpoint i hover over the Data32BitChannel and I see {0x02, 0x01, 0x24, 0x5301, 0xC914, 0xAAA }; instead of
{0x02, 0x01, 0x24, 0x5301, 0xAAAA };
Some one can explain to me this behavior.
NB:
when I comment the wtUInt32_t m_combined_value; it works just fine.
When you have a union, the compiler has to account for all memory required for all members of the union. When you have a wtUint32_t and a wtUint16_t in the union, the union will take up the size of a wtUint32. The extra bytes are not accessible from the m_value1 field, but they do live in the object. When you comment out the larger field, the union only needs to account for the wtUint16_t member, so the memory lines up as you expect it to.