2013-03-14 24 views

Trả lời

8

Nó có nghĩa là địa chỉ nhọn mod 8 là 0:

pointer % 8 == 0 

Điều này có thể quan trọng đối với các hoạt động ở mức độ thấp, nơi nó có thể tác động đúng đắn hoặc hiệu quả. Xem thêm this answer.

+2

Bạn sẽ quan tâm đến việc căn chỉnh byte để đảm bảo CPU có thể đọc địa chỉ bộ nhớ một cách hiệu quả. Khối bộ nhớ không liên kết gây ra lỗi bus. Xem phần Truy cập chưa được ký ở đây -> http://en.wikipedia.org/wiki/Segmentation_fault#Bus_error –

6

Nó có nghĩa là bộ nhớ bắt đầu từ ngày một địa chỉ đó là một bội số của 8.

Đối với lý do tại sao bạn thậm chí sẽ quan tâm: Đối với bộ nhớ đó là không phù hợp, CPU đôi khi yêu cầu hai truy cập để đọc tất cả. Trong một số trường hợp, nó thậm chí sẽ không thử và sẽ chỉ ném một lỗi. Việc đề cập đến "liên kết đến 8 byte" là để người gọi biết liệu nó có phải thực hiện bất kỳ sự lừa đảo nào của con trỏ hay không.

(Thông thường, bạn sẽ không quan tâm - trình biên dịch sẽ chăm sóc của hầu hết các vấn đề liên kết cho bạn Nhưng các thông tin ở đó trong trường hợp bạn cần nó cho một số lý do..)

1

alignment Memory mô tả các mô đun của các địa chỉ. Vì vậy, 8 byte liên kết có nghĩa là ông địa chỉ là bội số của tám.

Điều này rất quan trọng đối với nhiều hệ thống cũ hơn nơi các địa chỉ cần được căn chỉnh trên một ranh giới 'từ', thường là bội số của bốn byte hoặc hai byte. Nếu nó không được căn chỉnh đúng chương trình bị lỗi với 'lỗi căn chỉnh'.

Các máy gần đây khắc phục sự cố này bằng cách tải từ bất kỳ địa chỉ nào, nhưng thường có nghĩa là phải mất thêm vài chu kỳ để tải dữ liệu.

Các vấn đề liên quan