JavaScript is required

Hàm dùng để cấp phát bộ nhớ động cho kiểu nhớ động do lập trình viên tự định nghĩa như (union, struct):

A.

calloc();

B.

malloc();

C.

realloc();

D.
Cả 3 đáp án trên.
Trả lời:

Đáp án đúng: D


Trong C/C++, cả malloc(), calloc()realloc() đều được sử dụng để cấp phát bộ nhớ động. Tuy nhiên, malloc() là hàm cơ bản nhất dùng để cấp phát một vùng nhớ có kích thước chỉ định (tính bằng byte) và không khởi tạo giá trị ban đầu cho vùng nhớ đó. Vì kiểu dữ liệu động do người dùng định nghĩa (struct, union) có kích thước cụ thể, malloc() hoàn toàn phù hợp để cấp phát bộ nhớ cho chúng.

calloc() cũng cấp phát bộ nhớ động, nhưng nó nhận hai tham số: số lượng phần tử và kích thước của mỗi phần tử. calloc() sẽ cấp phát một vùng nhớ đủ lớn để chứa tất cả các phần tử và khởi tạo tất cả các byte trong vùng nhớ đó về 0. Mặc dù calloc() cũng có thể dùng để cấp phát bộ nhớ cho structunion, nhưng malloc() là lựa chọn phổ biến hơn vì nó đơn giản và hiệu quả hơn khi không cần khởi tạo giá trị ban đầu.

realloc() được dùng để thay đổi kích thước của một vùng nhớ đã được cấp phát trước đó. Nó không dùng để cấp phát bộ nhớ mới hoàn toàn.

Như vậy, malloc() là hàm phù hợp nhất để cấp phát bộ nhớ động cho các kiểu dữ liệu do người dùng định nghĩa.

Câu hỏi liên quan