我有以下使用 strdup 函数的代码
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
char source[] = "The Source String ";
int main()
{
char *dest;
if ((dest = _strdup(source)) == NULL)
{
fprintf(stderr, " Error allocation memory. ");
exit(1);
}
printf("The destination = %s\n", dest);
return 0;
}
它成功地显示了源字符串,但我很感兴趣它在哪种情况下失败以及它在日常问题中的使用效果如何?我知道它是由 strdup 决定的
char *strdup (const char *s)
{
char *d = malloc (strlen (s) + 1); // Space for length plus nul
if (d == NULL) return NULL; // No memory
strcpy (d,s); // Copy the characters
return d; // Return the new string
}
如果我们的字符串不为 NULL,是否有可能导致 strdup 函数失败?