Cấp phát bằng hàm malloc()

Mọi người ơi cho e hỏi, để cấp phát con trỏ bằng hàm malloc() mình cần xác định số byte cần cấp phát bằng cách xác định số phần tử muốn cấp phát rồi nhân với kích thước của kiểu dữ liệu, vậy e cấp phát 1 số byte bất kỳ cho 1 con trỏ int*:

Ví dụ:

int* arr = (int*) malloc(9);

thì mảng arr sẽ có mấy phần tử?
Theo như e nghĩ thì arr sẽ có 2 phần tử, nhưng đó mới chỉ là 8 byte, vậy 1 byte cuối nó là gì ạ?

Bạn xin gia đình 9 nghìn đồng để mua kem. Mỗi que kem giá 4 nghìn. Vậy hỏi bạn mua được mấy que kem? Bạn dùng bao nhiêu tiền để mua kem? Phần còn lại nó là gì?

4 Likes

2 que và cần 8k, 1k còn lại bỏ túi.
Vậy sẽ chỉ có 8 byte được cấp phát cho 2 phần, 1 byte còn lại kia không được cấp phát và nó vẫn free trong bộ nhớ ạ?

free đâu mà free, đã đưa 9 byte cho chương trình rồi nghĩa là bộ nhớ mất 9 byte đó. Còn chương trình chỉ xài 8/9 byte đó thì chương trình đó xài phí phạm :V

2 Likes

1k bạn vẫn bỏ túi, chưa trả lại cho gia đình (hệ điều hành) mà.
Và gia đình cho 9k thì chỉ nhận trả 9k mà thôi.
Nên cuối cùng 1k kia vẫn là phí phạm nha.

2 Likes

E hiểu r, cảm ơn mn, lâu lâu có mấy câu hỏi ngâu nó tự hiện ra mn đừng quạo nha :v

Giả sử gia đình nghèo chỉ có 20k, cho bạn 9k mua kem. 2 đứa em gái, mỗi đứa xin 5k mua kem. Vậy gia đình có đủ tiền cho 3 đứa con không?

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?