Table of Contents
Hiểu cách dữ liệu được lưu trữ trong bộ nhớ là thiết yếu cho việc lập trình hữu hiệu bằng C và C++. cấu trúc và hợp chất là những loại dữ liệu cơ bản ảnh hưởng đến bố trí nhớ và kích cỡ. Bài này giải thích cách bộ nhớ được phân bổ cho các loại dữ liệu này và cách tính chính xác kích cỡ của chúng.
Bố trí nhớ của các cấu trúc
Các cấu trúc ở C và C++ là những tập hợp các biến, có thể là các loại khác nhau, nhóm lại với nhau dưới một tên riêng lẻ. Trình biên dịch phân bổ bộ nhớ cho một cấu trúc bằng cách đặt mỗi thành viên một cách nhất định, với khả năng đệm để đáp ứng các yêu cầu sắp xếp theo thứ tự.
Tổng kích thước của một cấu trúc là tổng kích cỡ của các thành viên của nó cộng với bất kỳ miếng đệm thêm để thẳng. Việc lót đảm bảo mỗi thành viên bắt đầu ở một địa chỉ chia hết cho kích thước hoặc yêu cầu sắp xếp.
Bố trí nhớ gắn kết
Liên minh giống như cấu trúc nhưng khác nhau trong việc định vị trí nhớ. tất cả các thành viên của một hiệp hội chia sẻ cùng một không gian bộ nhớ, bằng kích thước của thành viên lớn nhất của nó. Tính năng này cho phép nhiều kiểu dữ liệu chiếm cùng vị trí bộ nhớ.
Kích thước của một liên minh được xác định bởi thành viên lớn nhất của nó, cộng với việc đệm để thẳng hàng. Viết cho một thành viên ảnh hưởng đến dữ liệu của các thành viên khác, vì vậy các hiệp hội được sử dụng cho việc chia sẻ dữ liệu hiệu quả trí nhớ.
Đang tính kích cỡ dữ liệu
Tính kích thước của cấu trúc và hợp nhất bao gồm việc sắp xếp kích cỡ của từng thành viên và xem xét việc đệm để thẳng hàng.
Chẳng hạn, hãy xem xét một cấu trúc và [FLT: 1]. Kích cỡ của cấu trúc tùy thuộc vào kích cỡ ), kích cỡ , và phần đệm được thêm vào để sắp xếp theo thứ tự. Tương tự, kích thước của một cấu trúc là kích cỡ của một bộ phận lớn nhất.
- Dùng kích cỡ để xác định tổng kích cỡ.
- Hãy xem xét những điều kiện xác định cho mỗi thành viên.
- Tài khoản cho việc đệm bổ sung bởi trình biên dịch.
- Hãy nhớ rằng sự kết hợp giữa mọi thành viên.