_dupenv_s_dbg
, _wdupenv_s_dbg
Obtenir une valeur à partir de l'environnement actuel Versions de , _wdupenv_s
qui allouent de la mémoire pour _malloc_dbg
fournir plus d’informations _dupenv_s
de débogage.
Syntaxe
errno_t _dupenv_s_dbg(
char **buffer,
size_t *numberOfElements,
const char *varname,
int blockType,
const char *filename,
int lineNumber
);
errno_t _wdupenv_s_dbg(
wchar_t **buffer,
size_t * numberOfElements,
const wchar_t *varname,
int blockType,
const char *filename,
int lineNumber
);
Paramètres
buffer
Mémoire tampon pour stocker la valeur de la variable.
numberOfElements
Taille de la buffer
.
varname
Nom de la variable d'environnement.
blockType
Type demandé du bloc de mémoire : _CLIENT_BLOCK
ou _NORMAL_BLOCK
.
filename
Pointeur désignant le nom du fichier source ou NULL
.
lineNumber
Numéro de ligne dans le fichier source ou NULL
.
Valeur retournée
Zéro en cas de réussite, code d'erreur en cas d'échec.
Ces fonctions valident leurs paramètres ; si buffer
ou varname
est NULL
, le gestionnaire de paramètres non valide est appelé comme décrit dans la validation des paramètres. Si l’exécution est autorisée à continuer, les fonctions définies errno
sur EINVAL
et renvoyées EINVAL
.
Si ces fonctions ne peuvent pas allouer suffisamment de mémoire, elles sont définies buffer
sur NULL
et numberOfElements
sur 0, et retournent ENOMEM
.
Notes
Les _dupenv_s_dbg
fonctions et _wdupenv_s_dbg
les fonctions sont identiques et _wdupenv_s
_dupenv_s
sauf que, lorsqu’elles _DEBUG
sont définies, ces fonctions utilisent la version de débogage de , _malloc_dbg
pour allouer de malloc
la mémoire pour la valeur de la variable d’environnement. Pour plus d’informations sur les fonctionnalités de débogage de _malloc_dbg
, consultez _malloc_dbg
.
Vous n’avez pas besoin d’appeler ces fonctions explicitement dans la plupart des cas. À la place, vous pouvez définir l'indicateur _CRTDBG_MAP_ALLOC
. Quand _CRTDBG_MAP_ALLOC
est défini, les appels à _dupenv_s
et _wdupenv_s
sont remappés à _dupenv_s_dbg
et _wdupenv_s_dbg
, respectivement, avec blockType
défini sur _NORMAL_BLOCK
. Par conséquent, vous n’avez pas besoin d’appeler ces fonctions explicitement, sauf si vous souhaitez marquer les blocs de tas comme _CLIENT_BLOCK
. Pour plus d’informations sur les types de bloc, consultez Types de bloc sur le tas de débogage.
Mappages de routines de texte générique
Routine TCHAR.H | _UNICODE et _MBCS non définis |
_MBCS défini |
_UNICODE défini |
---|---|---|---|
_tdupenv_s_dbg |
_dupenv_s_dbg |
_dupenv_s_dbg |
_wdupenv_s_dbg |
Spécifications
Routine | En-tête requis |
---|---|
_dupenv_s_dbg |
<crtdbg.h> |
_wdupenv_s_dbg |
<crtdbg.h> |
Pour plus d’informations sur la compatibilité, consultez Compatibility.
Exemple
// crt_dupenv_s_dbg.c
#include <stdlib.h>
#include <crtdbg.h>
int main( void )
{
char *pValue;
size_t len;
errno_t err = _dupenv_s_dbg( &pValue, &len, "pathext",
_NORMAL_BLOCK, __FILE__, __LINE__ );
if ( err ) return -1;
printf( "pathext = %s\n", pValue );
free( pValue );
err = _dupenv_s_dbg( &pValue, &len, "nonexistentvariable",
_NORMAL_BLOCK, __FILE__, __LINE__ );
if ( err ) return -1;
printf( "nonexistentvariable = %s\n", pValue );
free( pValue ); // It's OK to call free with NULL
}
pathext = .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.pl
nonexistentvariable = (null)
Voir aussi
Processus et contrôle d’environnement
Constantes environnementales
getenv_s
, _wgetenv_s
_putenv_s
, _wputenv_s