Tại sao biến struct gồm 1 biến int và 1 biến char lại có sizeof là 8 bytes?

Như đã nói ở trên title topic, e có đoạn code đơn giản sau:

#include <iostream>

struct structure {
    int x;
    char c;
};
int main()
{
    std::cout << sizeof(structure) << std::endl;
    return 0;
}

Khi xuất ra, chương trình lại cho kết quả là 8 (bytes) => vì sao lại thế ạ ?
Vì theo e biết sizeof(structure) = sizeof(x) + sizeof(c) = 4 + 1 = 5 mà sao chương trình lại cho là 8 ???

Do data alignment. Bài viết này trình bày rất rõ ràng, bạn có thể tham khảo:

2 Likes

Anh @freedom có thể nói cho e về công dụng của #pragma pack(n) hay #pragma pack(1) không ? Em thấy bài viết trên chưa nói về cái này, còn slide thầy Phương nói nhanh & chung chung quá e ko hiểu :cry:

Bạn tham khảo link này đây :smiley:

4 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?