【发布时间】:2021-12-30 14:42:55
【问题描述】:
在cpp reference page for strdup 上,我注意到它说,
与 Dynamic Memory TR 中的所有函数一样,只有在实现定义了
__STDC_ALLOC_LIB__并且用户在包含 string.h 之前将__STDC_WANT_LIB_EXT2__定义为整数常量 1 时,才能保证 strdup 可用。
我认为函数strdup所做的只是简单的malloc一个空间和strcpy该空间的源,我也在glibc中找到了它的实现。
char * __strdup (const char *s)
{
size_t len = strlen (s) + 1;
void *new = malloc (len);
if (new == NULL)
return NULL;
return (char *) memcpy (new, s, len);
}
它的实现并没有什么特别之处,那么为什么我要在使用strdup(或任何其他动态内存TR)之前将__STDC_WANT_LIB_EXT2__定义为整数1?在这里定义__STDC_WANT_LIB_EXT2__ 有什么作用?
【问题讨论】:
-
stackoverflow.com/questions/68259832/… 可以回答你的问题吗?
标签: c