Cho em hỏi về cách hoạt động của hàm strdup(char *s)
trong C ạ. Nó khác với strcpy như thế nào?
Sách “Kỹ thuật lập trình C cơ bản & nâng cao” của GS. Phạm Văn Ất nói là: “hàm cấp một vùng nhớ để đặt 2 lần chuỗi s” thì có đúng không ạ?
Em cảm ơn nhiều ạ.
Hàm strdup trong C
Không phải, vùng nhớ đó chỉ dành cho 1 copy của s
. Với chuỗi gốc nữa là bạn được hai copy.
4 Likes
“Copy” trong strcpy()
là sao chép từ mảng (kí tự) có sẵn và dán sang mảng có sẵn khác. Kích thước có thể không giống nhau.
“Duplicate” trong strdup()
là nhân bản từ mảng có sẵn thành một mảng mới khác vùng nhớ với mảng ban đầu. Cùng kích thước.
Copy: mình bắt chước bạn.
Duplicate: nhân bản vô tính của bạn. Clone!
4 Likes