Phân bổ vị trí bộ nhớ trong lập trình C

1631

Kích thước chính xác của mảng là không biết cho đến khi thời gian biên dịch, tức là thời gian khi một compier biên dịch mã được viết bằng một ngôn ngữ lập trình thành một hình thức thực thi. Kích thước của mảng mà bạn khai báo ban đầu có thể đôi khi không hiệu quả và đôi khi nhiều hơn cần thiết. cấp phát bộ nhớ động cho phép một chương trình để có được không gian bộ nhớ hơn, trong khi chạy hoặc để giải phóng không gian khi không có không gian được yêu cầu.

Mặc dù, ngôn ngữ  lập trình C vốn không có bất kỳ kỹ thuật để cấp phát bộ nhớ động, có 4 chức năng thư viện dưới “stdlib.h” cho cấp phát bộ nhớ động.

  • malloc (): Phân bổ theo yêu cầu kích thước của byte và trả về một con trỏ byte đầu tiên của không gian được phân bổ
  • calloc () : Phân bổ không gian cho một phần tử mảng, khởi tạo không và sau đó trả về một con trỏ tới bộ nhớ
  • free() : dellocate không gian giao trước đây
  • realloc () : Thay đổi kích thước của không gian giao trước đây

1. malloc().

Tên malloc là viết tắt của “cấp phát bộ nhớ”. Các chức năng malloc () bảo lưu một khối bộ nhớ với kích thước quy định và trả về một con trỏ kiểu trống có thể được đúc thành con trỏ dưới mọi hình thức.

Cú pháp của malloc ()

Ở đây, ptr là con trỏ của dàn diễn viên-type. Các malloc () trả về một con trỏ đến một khu vực của bộ nhớ với kích thước của kích thước byte. Nếu không gian là không đủ, phân bổ không và trả về con trỏ NULL.

 

2. calloc ()

Tên calloc là viết tắt của “phân bổ tiếp giáp”. Sự khác biệt duy nhất giữa malloc () và calloc () là, malloc () phân bổ khối duy nhất của bộ nhớ trong khi calloc () phân bổ nhiều khối nhớ từng cùng kích thước và đặt tất cả các byte không.

Cú pháp của calloc ()

Tuyên bố này sẽ phân bổ không gian tiếp giáp trong bộ nhớ cho một mảng n phần tử

Tham gia học lập trình c tại vietpro

3. free()

Tự động phân bổ bộ nhớ với một trong hai calloc () hoặc malloc () không có được trở lại ngày của riêng mình. Các lập trình viên phải sử dụng miễn phí () một cách rõ ràng để giải phóng không gian.

Cú pháp của free()

Tuyên bố này gây ra các không gian trong bộ nhớ trỏ bởi ptr được deallocated.

4. realloc ()

Nếu bộ nhớ giao trước đây là không đủ hoặc đầy đủ hơn. Sau đó, bạn có thể thay đổi kích thước bộ nhớ trước đây được phân bổ sử dụng realloc ().

Cú pháp của realloc ()

Ở đây, ptr được phân bổ lại với kích thước của newsize

BÌNH LUẬN

Please enter your comment!
Please enter your name here