在 C 中,您可以使用strdup
简洁地分配缓冲区并将字符串复制到其中。然而,据我所知,一般记忆没有类似的功能。例如,我不能说
struct myStruct *foo = malloc(sizeof(struct myStruct));
fill_myStruct(foo);
struct myStruct *bar = memdup(foo, sizeof(struct myStruct));
// bar is now a reference to a new, appropriately sized block of memory,
// the contents of which are the same as the contents of foo
那么,我的问题是三方面的:
- 是否有一些我不知道的像这样的标准库函数?
- 如果没有,是否有一种简洁且最好是标准的方法来执行此操作而无需显式调用
malloc
andmemcpy
? - 为什么 C 包含
strdup
但不包含memdup
?