Vì vậy, tôi đọc rằng khi các biến được khai báo trong C++ nếu bạn muốn có bộ nhớ cache tối ưu, bộ nhớ sẽ được gắn vào căn chỉnh tự nhiên của nó. Ví dụ:Liên kết bộ nhớ C++
int a; // memory address should end in 0x0,0x4,0x8,0xC
int b[2]; // 8 bytes 0x0,0x8
int b[4]; // 16 bytes 0x0
Nhưng trong thực tế, các biến này không tuân theo quy tắc "căn chỉnh tự nhiên", biến 16 byte đang nằm tại địa chỉ bộ nhớ kết thúc bằng 0xC. Tại sao điều này?
Mảng không quan tâm đến bởi sự liên kết, chỉ có các yếu tố cá nhân là – Quentin
Có thể muốn trang web trường hợp chính xác –
Không có trường hợp thực sự im chỉ là thử nghiệm, tất cả tôi có thể tìm thấy được rằng bất kể kích thước biến tất cả nó luôn 4 byte được căn chỉnh trừ khi nó là một kiểu dữ liệu 1 byte. Chỉ cần tò mò tại sao. – Student123