Sự khác biệt giữa phân bổ bộ nhớ tĩnh và động

Sự khác biệt chính - Phân bổ bộ nhớ tĩnh so với động
 

Trong lập trình, cần lưu trữ dữ liệu tính toán. Những dữ liệu này được lưu trữ trong bộ nhớ. Các vị trí bộ nhớ để lưu trữ dữ liệu trong lập trình máy tính được gọi là các biến. Các biến có một kiểu dữ liệu cụ thể. Do đó, bộ nhớ được phân bổ để chạy các chương trình. Bộ nhớ có thể được phân bổ theo hai cách. Chúng là cấp phát bộ nhớ tĩnh và cấp phát bộ nhớ động. Trong cấp phát bộ nhớ tĩnh, một khi bộ nhớ được cấp phát, nó không thể thay đổi. Bộ nhớ không thể tái sử dụng. Nhưng trong cấp phát bộ nhớ động, một khi bộ nhớ được phân bổ, nó có thể được thay đổi. Các sự khác biệt chính giữa cấp phát bộ nhớ tĩnh và động là trong cấp phát bộ nhớ tĩnh một khi bộ nhớ được cấp phát, kích thước bộ nhớ được cố định trong khi cấp phát bộ nhớ động, một khi bộ nhớ được phân bổ, kích thước bộ nhớ có thể được thay đổi.

NỘI DUNG

1. Tổng quan và sự khác biệt chính
2. Phân bổ bộ nhớ tĩnh là gì
3. Phân bổ bộ nhớ động là gì
4. Điểm tương đồng giữa phân bổ bộ nhớ tĩnh và động
5. So sánh cạnh nhau - Phân bổ bộ nhớ tĩnh so với động ở dạng bảng
6. Tóm tắt

Phân bổ bộ nhớ tĩnh là gì?

Trong cấp phát bộ nhớ tĩnh, bộ nhớ được phân bổ là cố định. Một khi bộ nhớ được phân bổ, nó không thể thay đổi. Bộ nhớ không thể tăng hoặc giảm. Ví dụ, trong ngôn ngữ C nếu lập trình viên viết int x, có nghĩa là biến có thể lưu trữ một giá trị nguyên. Số lượng byte phụ thuộc vào máy tính. Cũng có thể có mảng. Ví dụ. int x [5]; X này là một mảng có thể lưu trữ một chuỗi dữ liệu cùng loại. Nó có thể lưu trữ năm yếu tố số nguyên. Nó không thể lưu trữ nhiều hơn năm yếu tố. Trong Java, một mảng có thể được tạo như, int Array [] = new int [5]; Mảng 'mảng' có thể lưu trữ 5 giá trị nguyên và không thể lưu trữ nhiều hơn thế.

Hình 01: Phương thức phân bổ bộ nhớ

Trong cấp phát bộ nhớ tĩnh, một khi các biến được phân bổ, chúng sẽ tồn tại vĩnh viễn. Sau khi phân bổ ban đầu, lập trình viên không thể thay đổi kích thước bộ nhớ. Nếu lập trình viên phân bổ một mảng có thể lưu trữ 10 phần tử, thì không thể lưu trữ các giá trị nhiều hơn số lượng được chỉ định. Nếu ban đầu lập trình viên phân bổ một mảng có thể chứa 10 phần tử, nhưng chỉ cần 5 phần tử, thì sẽ có sự lãng phí bộ nhớ. Bộ nhớ đó không còn cần thiết nữa, nhưng cũng không thể sử dụng lại bộ nhớ. Cấp phát bộ nhớ tĩnh là cố định nhưng việc thực hiện rất đơn giản và dễ dàng, và nó cũng nhanh.

Phân bổ bộ nhớ động là gì?

Đôi khi cần phải thay đổi kích thước của bộ nhớ. Vì vậy, bộ nhớ có thể được phân bổ động. Tùy thuộc vào chèn và xóa các thành phần dữ liệu, bộ nhớ có thể tăng hoặc thu hẹp. Nó được gọi là cấp phát bộ nhớ động.

Trong ngôn ngữ C, tệp tiêu đề stdlib.h, có bốn chức năng để cấp phát bộ nhớ động. Họ là calloc, malloc, realloc và miễn phí. Hàm malloc () phân bổ kích thước byte cần thiết và trả về một con trỏ void, trỏ byte đầu tiên của bộ nhớ được phân bổ. Hàm calloc () phân bổ kích thước byte cần thiết và khởi tạo chúng thành 0. Sau đó trả về một con trỏ trống vào bộ nhớ. Hàm free () được sử dụng để phân bổ lại bộ nhớ được phân bổ. Và chức năng realloc có thể sửa đổi bộ nhớ được phân bổ trước đó. Sau khi phân bổ bộ nhớ bằng calloc hoặc malloc, kích thước bộ nhớ được cố định, nhưng chúng có thể tăng hoặc giảm bằng cách sử dụng chức năng realloc. Trong Java, các bộ sưu tập có thể được sử dụng để cấp phát bộ nhớ động.

Ưu điểm chính của phân bổ bộ nhớ động là nó tiết kiệm bộ nhớ. Lập trình viên có thể phân bổ bộ nhớ hoặc giải phóng bộ nhớ khi cần thiết. Bộ nhớ có thể được phân bổ lại trong khi thực hiện và có thể giải phóng bộ nhớ khi không cần thiết. Cấp phát bộ nhớ động cũng hiệu quả hơn phân bổ bộ nhớ tĩnh. Một nhược điểm là việc thực hiện cấp phát bộ nhớ động rất phức tạp.

Điểm giống nhau giữa phân bổ bộ nhớ tĩnh và động?

  • Cả hai đều là cơ chế cấp phát bộ nhớ.
  • Cả hai nên được thực hiện bởi các lập trình viên bằng tay.

Sự khác biệt giữa phân bổ bộ nhớ tĩnh và động?

Phân bổ bộ nhớ tĩnh và động

Cấp phát bộ nhớ tĩnh là phương pháp phân bổ bộ nhớ và một khi bộ nhớ được cấp phát, nó được sửa. Cấp phát bộ nhớ động là phương pháp phân bổ bộ nhớ và một khi bộ nhớ được cấp phát, nó có thể được thay đổi.
 Sửa đổi
Trong cấp phát bộ nhớ tĩnh, không thể thay đổi kích thước sau khi cấp phát ban đầu. Trong cấp phát bộ nhớ động, bộ nhớ có thể được thu nhỏ hoặc tối đa hóa tương ứng.
Thực hiện
Phân bổ bộ nhớ tĩnh dễ thực hiện. Cấp phát bộ nhớ động rất phức tạp để thực hiện.
 Tốc độ
Trong bộ nhớ tĩnh, thực thi cấp phát nhanh hơn cấp phát bộ nhớ động. Trong bộ nhớ động, thực thi cấp phát chậm hơn phân bổ bộ nhớ tĩnh.
Sử dụng bộ nhớ
Trong cấp phát bộ nhớ tĩnh, không thể sử dụng lại bộ nhớ chưa sử dụng. Cấp phát bộ nhớ động cho phép tái sử dụng bộ nhớ. Lập trình viên có thể phân bổ thêm bộ nhớ khi có yêu cầu. Anh ta có thể giải phóng bộ nhớ khi cần thiết.

Tóm lược - Phân bổ bộ nhớ tĩnh và động

Trong lập trình, cấp phát bộ nhớ tĩnh và cấp phát bộ nhớ động là hai cơ chế phân bổ bộ nhớ. Sự khác biệt giữa cấp phát bộ nhớ tĩnh và cấp phát là trong cấp phát bộ nhớ tĩnh một khi bộ nhớ được cấp phát, kích thước bộ nhớ được cố định trong khi cấp phát bộ nhớ động, một khi bộ nhớ được cấp phát, kích thước bộ nhớ có thể thay đổi. Lập trình viên có thể quyết định bộ nhớ nên tĩnh hay động tùy thuộc vào ứng dụng.

Tải xuống bản PDF của Phân bổ bộ nhớ tĩnh và động

Bạn có thể tải xuống phiên bản PDF của bài viết này và sử dụng nó cho mục đích ngoại tuyến theo ghi chú trích dẫn. Vui lòng tải xuống phiên bản PDF tại đây: Sự khác biệt giữa Phân bổ bộ nhớ tĩnh và động

Tài liệu tham khảo:

1.Kayal, Somnath. MÙA ĐÔNG KAYAL. Sự khác biệt giữa Phân bổ bộ nhớ tĩnh & Phân bổ bộ nhớ động, ngày 1 tháng 1 năm 1970. Có sẵn tại đây 
2.tutorialspoint.com. Mảng ăn ở C .. Điểm. Có sẵn ở đây 
3. Công nghệ học. Bộ nhớ tĩnh so với bộ nhớ động | Hướng dẫn ngôn ngữ C, Naresh i Technologies, ngày 19 tháng 9 năm 2016. Có sẵn tại đây