В 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
иmemcpy
? - Почему C включает
strdup
, но неmemdup
?