sizeof (int) không phải lúc nào cũng là kích thước "từ" của CPU của bạn. Câu hỏi quan trọng nhất ở đây là lý do tại sao bạn muốn biết kích thước từ .... bạn có đang cố gắng thực hiện một số loại tối ưu hóa thời gian chạy và CPU cụ thể không?
Điều đó đang được nói, trên Windows với bộ xử lý Intel, kích thước từ danh nghĩa sẽ là một trong hai 32 hoặc 64 bit, và bạn có thể dễ dàng hình dung này ra:
- nếu chương trình của bạn được biên dịch cho 32-bit, sau đó kích thước từ danh nghĩa là 32-bit
- nếu bạn đã biên dịch chương trình 64 bit thì kích thước từ danh nghĩa là 64 bit.
Câu trả lời này nghe có vẻ đúng, nhưng đúng với thứ tự đầu tiên. Nhưng có một số tinh tế quan trọng. Mặc dù đăng ký x86 trên bộ vi xử lý Intel hoặc AMD hiện đại có chiều rộng 64 bit; bạn chỉ có thể (dễ dàng) sử dụng độ rộng 32 bit của chúng trong các chương trình 32 bit - mặc dù bạn có thể đang chạy hệ điều hành 64 bit. Điều này cũng đúng trên Linux và OSX.
Hơn nữa, trên hầu hết các CPU hiện đại, chiều rộng bus dữ liệu lớn hơn các thanh ghi ALU chuẩn (EAX, EBX, ECX, v.v.). Chiều rộng của bus này có thể thay đổi, một số hệ thống có 128 bit, hoặc thậm chí 192 bit bus rộng.
Nếu bạn lo ngại về hiệu suất, bạn cũng cần phải hiểu cách bộ đệm dữ liệu L1 và L2 hoạt động. Lưu ý rằng một số CPU hiện đại có bộ đệm L3. Bộ đệm bao gồm một đơn vị có tên là Bộ đệm ghi
Hệ điều hành cụ thể hoặc nền tảng chéo? –
lưu ý rằng 'sizeof' trả về một số ký tự và tiêu chuẩn chỉ xác định ** ít nhất ** 8 bit trên mỗi ký tự. –
sizeof (int) hoạt động cho mọi nền tảng tôi đã làm việc. – kenny