ฉันกำลังทดสอบการจัดชั้นเรียนและพบพฤติกรรมแปลกๆ ฉันทดสอบด้วยการตั้งค่าการจัดตำแหน่งคอมไพเลอร์ VS2012 4
และ 8
ไบต์ แต่ในแต่ละกรณีเอาต์พุตจะเหมือนกัน
class Alignemnt{
public:
Alignemnt():a(){}
int a;
};
class Alignemnt_1{
public:
int a;
char array[2];
};
class Alignemnt_2{
public:
int a;
char array[2];
int x;
};
std::cout << "Sizeof(Alignemnt) :" <<sizeof(Alignemnt) << std::endl;
std::cout << "Sizeof(Alignemnt_1) :" <<sizeof(Alignemnt_1) << std::endl;
std::cout << "Sizeof(Alignemnt_2) :" <<sizeof(Alignemnt_2) << std::endl;
ทุกครั้งที่ส่งออกคือ:
Sizeof(Alignemnt) : 4
Sizeof(Alignemnt_1) : 8
Sizeof(Alignemnt_2) : 12
ฉันคิดว่าขนาด Alignemnt_2 ควรเป็น 16 ไบต์
struct
แทนclass
เพื่อเหตุผลในการทดสอบ เพื่อประหยัดเวลาของคุณด้วยการหลีกเลี่ยงการพิมพ์คำหลักpublic
- person borisbn   schedule 29.01.2015