Partager via


_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_sde 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 EINVALet 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_dbgpour allouer de mallocla 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