Tôi có nền tảng C #. Tôi là một người mới học ngôn ngữ cấp thấp như C.
Trong C #, struct
bộ nhớ của được đặt bởi trình biên dịch theo mặc định. Trình biên dịch có thể sắp xếp lại thứ tự các trường dữ liệu hoặc đệm các bit bổ sung giữa các trường một cách ngầm định. Vì vậy, tôi đã phải chỉ định một số thuộc tính đặc biệt để ghi đè hành vi này cho bố cục chính xác.
AFAIK, C không sắp xếp lại hoặc căn chỉnh bố cục bộ nhớ của a struct
theo mặc định. Tuy nhiên, tôi nghe nói có một ngoại lệ nhỏ rất khó tìm.
Hành vi bố trí bộ nhớ của C là gì? Điều gì nên được sắp xếp lại / căn chỉnh và không?
#pragma pack
nhưng với sự kiểm soát chi tiết hơn đối với ngữ nghĩa.