شكرا لكم جميعا. أشارني شخص ما في العمل إلى أصل المشكلة.
إنها مسألة التكوين الخاطئ للمشروع ، والتي تعطي مشكلات محاذاة البيانات.
بعد التجميع ، مع إعدادات المشروع الحالية ، فإن أول عضوين من الفصل هما 3 بايت من الحجم.
يجب أن يكون 4 بايت ، وبالتالي اختلال بايت 1. الإضافي المضافة هو القمامة في البايت غير المحسوب ، لذلك ، فإن التأثير الكامل هو تغيير بايت واحد وإضافة 2.
تم إلغاء هذا التأثير إضافة عضو إضافي ، على الرغم من أنه ليس حلاً أنيقًا (الحل هو تكوين المشروع بشكل عام).
class MyClass
{
private:
bool bit_; // 1 byte
uint16 num_; // 2 byte
bool dummy; // extra byte to help the alignment
MyType member_;
public:
MyClass(MyType value){
member_ = value; // Now it works as expected.
}
};