Computer >> Máy Tính >  >> Lập trình >> lập trình C

Bố cục bộ nhớ của chương trình C

Cách bố trí bộ nhớ cho các chương trình C như dưới đây. Có ít cấp độ. Đây là -

  • Phân đoạn ngăn xếp
  • Phân đoạn đống
  • Phân đoạn Văn bản
  • Phân đoạn dữ liệu

Bố cục bộ nhớ của chương trình C

Bây giờ chúng ta hãy xem các chức năng của các phần này là gì.

Sr.No Phần &Mô tả
1 Ngăn xếp
Tiến trình Stack chứa các dữ liệu tạm thời như tham số phương thức / hàm, địa chỉ trả về và các biến cục bộ. Nó là một vùng bộ nhớ được phân bổ cho các biến tự động và các tham số hàm. Nó cũng lưu trữ một địa chỉ trả về trong khi thực hiện các lệnh gọi hàm. Stack sử dụng cơ chế LIFO (Last- In-First-Out) để lưu trữ các biến cục bộ hoặc tự động, các tham số hàm và lưu trữ địa chỉ tiếp theo hoặc địa chỉ trả về. Địa chỉ trả về đề cập đến địa chỉ trả về sau khi hoàn thành việc thực thi chức năng. Kích thước phân đoạn này có thể thay đổi theo các biến cục bộ, tham số hàm và lệnh gọi hàm. Phân khúc này phát triển từ địa chỉ cao hơn đến địa chỉ thấp hơn.
2 Heap
Đây là bộ nhớ được cấp phát động cho một tiến trình trong thời gian chạy của nó. Đây là vùng bộ nhớ được phân bổ để lưu trữ bộ nhớ động chẳng hạn như cho các lệnh gọi malloc () và calloc (). Kích thước phân khúc này cũng có thể thay đổi theo phân bổ của người dùng. Phân khúc này phát triển từ địa chỉ thấp hơn đến địa chỉ cao hơn.
Bây giờ chúng ta hãy kiểm tra kích thước của các phân đoạn (phân đoạn dữ liệu và bss) khác nhau như thế nào với một vài chương trình mẫu. Kích thước phân đoạn được biết bằng cách thực hiện lệnh “size”.
3 Văn bản
Điều này bao gồm hoạt động hiện tại được thể hiện bằng giá trị của Bộ đếm chương trình và nội dung của các thanh ghi của bộ xử lý. Nó được đại diện bởi phần .text. Điều này xác định một vùng trong bộ nhớ lưu các mã lệnh. Đây cũng là một khu vực cố định.
4 Dữ liệu
Phần này chứa các biến toàn cục và biến tĩnh. Nó được đại diện bởi phần .data và .bss. Phần .data dùng để khai báo vùng nhớ, nơi lưu trữ các phần tử dữ liệu cho chương trình. Phần này không thể được mở rộng sau khi các phần tử dữ liệu được khai báo và nó vẫn giữ nguyên trạng thái tĩnh trong suốt chương trình.
Phần .bss cũng là phần bộ nhớ tĩnh chứa các vùng đệm để dữ liệu được khai báo sau này trong chương trình. Bộ nhớ đệm này không được lấp đầy.

Các phân đoạn dữ liệu có thể được chia thành nhiều phần hơn.

Sr.No Phần &Mô tả
1 Phân đoạn dữ liệu được khởi tạo
Đây là một phần của tệp đối tượng hoặc không gian địa chỉ ảo của chương trình bao gồm các biến toàn cục và tĩnh chưa được khởi tạo. Đoạn dữ liệu chưa khởi tạo còn được gọi là đoạn BSS (Block Started by Symbol).
2 Phân đoạn dữ liệu chưa khởi tạo
Đây là đọc-ghi, vì giá trị của các biến có thể bị thay đổi trong thời gian chạy. Phân khúc này cũng có kích thước cố định.