_strdup, _wcsdup, _mbsdup
Duplique les chaînes.
Important
_mbsdup ne peut pas être utilisé dans les applications qui s'exécutent dans le Windows Runtime.Pour plus d'informations, consultez Fonctions CRT non prises en charge avec /ZW.
char *_strdup(
const char *strSource
);
wchar_t *_wcsdup(
const wchar_t *strSource
);
unsigned char *_mbsdup(
const unsigned char *strSource
);
Paramètres
- strSource
Chaîne source se terminant par null.
Valeur de retour
Chacune de ces fonctions retourne un pointeur vers l'emplacement de stockage de la chaîne copiée ou NULL si le stockage ne peut pas être alloué.
Notes
La fonction_strdup appelle malloc pour allouer l'espace de stockage pour une copie de strSource et copie ensuite strSource dans l'espace alloué.
_wcsdup et _mbsdup sont des versions à caractères élargis et à caractères multi-octets de _strdup. Les arguments et la valeur de retour de _wcsdup sont des chaînes à caractères larges ; ceux de _mbsdup sont des chaînes de caractères multioctets. Ces trois fonctions se comportent sinon de façon identique.
Mappages de routines de texte générique
Routine TCHAR.H |
_UNICODE & _MBCS non définis |
_MBCS défini |
_UNICODE défini |
---|---|---|---|
_tcsdup |
_strdup |
_mbsdup |
_wcsdup |
Comme _strdup appelle malloc pour allouer l'espace de stockage pour la copie de strSource, il est conseillé de toujours libérer cette mémoire en appelant la routine disponible sur le pointeur retourné par l'appel à _strdup.
Si _DEBUG et _CRTDBG_MAP_ALLOC sont définis, les appels à _strdup et _wcsdup sont remplacés par des appels à _strdup_dbg et _wcsdup_dbg pour conserver de la mémoire pour les allocations de déboguage. Pour plus d'informations, consultez _strdup_dbg, _wcsdup_dbg.
Configuration requise
Routine |
En-tête requis |
---|---|
_strdup |
<string.h> |
_wcsdup |
<string.h> ou <wchar.h> |
_mbsdup |
<mbstring.h> |
Pour plus d'informations sur la compatibilité, consultez Compatibilité.
Exemple
// crt_strdup.c
#include <string.h>
#include <stdio.h>
int main( void )
{
char buffer[] = "This is the buffer text";
char *newstring;
printf( "Original: %s\n", buffer );
newstring = _strdup( buffer );
printf( "Copy: %s\n", newstring );
free( newstring );
}
Équivalent .NET Framework
Voir aussi
Référence
strncat, _strncat_l, wcsncat, _wcsncat_l, _mbsncat, _mbsncat_l
strncmp, wcsncmp, _mbsncmp, _mbsncmp_l
strncpy, _strncpy_l, wcsncpy, _wcsncpy_l, _mbsncpy, _mbsncpy_l
_strnicmp, _wcsnicmp, _mbsnicmp, _strnicmp_l, _wcsnicmp_l, _mbsnicmp_l