Hàm malloc() trong thư viện C với EXAMPLE
malloc trong C là gì?
Hàm malloc() là viết tắt của việc cấp phát bộ nhớ. Đây là một chức năng được sử dụng để phân bổ động một khối bộ nhớ. Nó dự trữ không gian bộ nhớ có kích thước được chỉ định và trả về con trỏ null trỏ đến vị trí bộ nhớ. Con trỏ trả về thường có kiểu void. Điều đó có nghĩa là chúng ta có thể gán hàm malloc cho bất kỳ con trỏ nào.
cú pháp
ptr = (cast_type *) malloc (byte_size);
Ở đây,
- ptr là con trỏ của cast_type.
- Hàm malloc trả về một con trỏ tới bộ nhớ được phân bổ của byte_size.
Example: ptr = (int *) malloc (50)
Khi câu lệnh này được thực thi thành công, không gian bộ nhớ 50 byte sẽ được dành riêng. Địa chỉ của byte đầu tiên của vùng dành riêng được gán cho con trỏ ptr kiểu int.
Hãy xem xét một ví dụ khác về triển khai malloc:
#include <stdlib.h> int main(){ int *ptr; ptr = malloc(15 * sizeof(*ptr)); /* a block of 15 integers */ if (ptr != NULL) { *(ptr + 5) = 480; /* assign 480 to sixth integer */ printf("Value of the 6th integer is %d",*(ptr + 5)); } }
Đầu ra:
Value of the 6th integer is 480
- Thông báo rằng kích thước(*ptr) đã được sử dụng thay vì kích thước(int) để làm cho mã mạnh mẽ hơn khi khai báo *ptr được ép kiểu sang một kiểu dữ liệu khác sau này.
- Việc phân bổ có thể thất bại nếu bộ nhớ không đủ. Trong trường hợp này, nó trả về một con trỏ NULL. Vì vậy, bạn nên bao gồm mã để kiểm tra con trỏ NULL.
- Hãy nhớ rằng bộ nhớ được phân bổ là liên tục và nó có thể được coi như một mảng. Chúng ta có thể sử dụng phép tính số học con trỏ để truy cập các phần tử mảng thay vì sử dụng dấu ngoặc vuông [ ]. Chúng tôi khuyên bạn nên sử dụng + để tham chiếu đến các phần tử mảng vì sử dụng phép tăng dần ++ hoặc += sẽ thay đổi địa chỉ được lưu trữ bởi con trỏ.
Hàm Malloc cũng có thể được sử dụng với kiểu dữ liệu ký tự cũng như các kiểu dữ liệu phức tạp như cấu trúc.