Namespaces
Variants

strdup

From cppreference.net
Défini dans l'en-tête <string.h>
char * strdup ( const char * str1 ) ;
(TR mémoire dynamique)

Retourne un pointeur vers une chaîne d'octets terminée par un caractère nul, qui est une duplication de la chaîne pointée par str1 . Le pointeur retourné doit être passé à free pour éviter une fuite de mémoire.

Si une erreur se produit, un pointeur nul est retourné et errno peut être défini.

Comme toutes les fonctions du TR sur la mémoire dynamique, strdup n'est garantie d'être disponible que si __STDC_ALLOC_LIB__ est défini par l'implémentation et si l'utilisateur définit __STDC_WANT_LIB_EXT2__ à la constante entière 1 avant d'inclure string.h .

Table des matières

Paramètres

str1 - pointeur vers la chaîne d'octets terminée par un caractère nul à dupliquer

Valeur de retour

Un pointeur vers la chaîne nouvellement allouée, ou un pointeur nul si une erreur s'est produite.

Notes

La fonction est identique à la POSIX strdup .

Exemple

#ifdef __STDC_ALLOC_LIB__
#define __STDC_WANT_LIB_EXT2__ 1
#else
#define _POSIX_C_SOURCE 200809L
#endif
#include <string.h>
#include <assert.h>
#include <stdlib.h>
int main(void)
{
    const char *s1 = "String";
    char *s2 = strdup(s1);
    assert(strcmp(s1, s2) == 0);
    free(s2);
}

Voir aussi

(dynamic memory TR)
alloue une copie d'une chaîne jusqu'à une taille spécifiée
(fonction)
copie une chaîne vers une autre
(fonction)
alloue de la mémoire
(fonction)