Malloc trong C là gì?
Hàm malloc () là viết tắt của cấp phát bộ nhớ. Nó là một hàm được sử dụng để cấp phát độ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. Nó 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à một con trỏ của cast_type.
- Hàm malloc trả về một con trỏ đến vùng nhớ được cấp phát byte_size.
Example: ptr = (int *) malloc (50)
Khi câu lệnh này được thực thi thành công, một không gian bộ nhớ 50 byte sẽ được bảo lưu. Địa chỉ của byte đầu tiên của không gian 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:
#includeint 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
- Lưu ý rằng sizeof (* ptr) đã được sử dụng thay vì sizeof (int) để làm cho mã mạnh hơn khi khai báo * ptr được đánh máy thành một kiểu dữ liệu khác sau này.
- Việc cấp phát có thể không thành công 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 một con trỏ NULL.
- Hãy nhớ rằng bộ nhớ được cấp phát là liền kề và nó có thể được coi là một mảng. Chúng ta có thể sử dụng số học con trỏ để truy cập các phần tử của mảng hơn là sử dụng dấu ngoặc []. 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ì việc sử dụng tăng ++ 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.