i folgenden Code haben, die es strdup Funktionwenn die strdup-Funktion fehlschlägt?
#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;
}
The Source String erfolgreich sagt, aber ich bin interessant, in welcher Situation sie versagt und wie gut es ist die Nutzung von es in der täglichen Probleme? Ich weiß, dass es strdup wird bestimmt durch
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
}
wenn unsere Zeichenkette nicht NULL ist, gibt es irgendeine Wahrscheinlichkeit des Scheiterns der strdup Funktion?
Seien Sie vorsichtig, Sie verwenden '_strdup' anstelle von' strdup' und ich bin mir nicht sicher, Sie wissen warum. – Eregrith
Compiler gab mir eine Warnung darüber –
@Dato: Der Compiler gab Ihnen eine Warnung über '_strdup' oder über' strdup'? Die 'strdup'-Funktion ist nicht durch den C-Standard definiert. Es wird von POSIX definiert. Möglicherweise müssen Sie etwas tun, damit Ihr Compiler es erkennt, wie zum Beispiel '# definieren' irgendein Symbol. '_strdup' anstatt' strdup' zu verwenden, ist keine gute Lösung. –