Hôm nay tôi đã đến trang 167 của Ngôn ngữ lập trình C (ấn bản thứ hai Brian W. Kernighan & Dennis M. Ritchie) và thấy rằng tác giả nói rằng tôi phải chọn malloc
. Đây là phần trong cuốn sách:
7.8.5 Quản lý lưu trữ
Các hàm malloc và calloc có được các khối bộ nhớ một cách linh hoạt.
void *malloc(size_t n)
trả về một con trỏ tới n byte lưu trữ chưa được khởi tạo hoặc NULL nếu yêu cầu không thể được thỏa mãn.
void *calloc(size_t n, size_t size)
trả về một con trỏ đến đủ không gian trống cho một mảng gồm n đối tượng có kích thước được chỉ định hoặc NULL nếu yêu cầu không thể được thỏa mãn. Bộ lưu trữ được khởi tạo về không. Con trỏ được trả về bởi malloc hoặc calloc có sự căn chỉnh phù hợp cho đối tượng được đề cập, nhưng nó phải được chuyển thành loại thích hợp, như trong
int *ip; ip = (int *) calloc(n, sizeof(int));
Tôi đã biết rằng malloc
(và gia đình của nó) trả về kiểu void * , và có những giải thích tốt tại sao không bỏmalloc
.
Nhưng câu hỏi của tôi là: Tại sao cuốn sách nói rằng tôi nên bỏ nó?
void *
và không được cập nhật. Xem thêm câu trả lời này .
malloc
vì đó không phải là C ++ - ngoại trừ khi bạn phải - nhưng bạn không nên - ngoại trừ ... AGGGHHHHHH !!!!! :-)