_dupenv_s_dbg
, _wdupenv_s_dbg
Obtiene un valor del entorno actual. Versiones de _dupenv_s
, _wdupenv_s
que asignan memoria con _malloc_dbg
para proporcionar más información de depuración.
Sintaxis
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
);
Parámetros
buffer
Búfer en el que se va a almacenar el valor de la variable.
numberOfElements
Tamaño de buffer
.
varname
Nombre de la variable de entorno.
blockType
Tipo de bloque de memoria solicitado: _CLIENT_BLOCK
o _NORMAL_BLOCK
.
filename
Puntero al nombre del archivo de código fuente o de NULL
.
lineNumber
Número de línea del archivo de código fuente o NULL
.
Valor devuelto
Devuelve cero si se ejecuta correctamente; devuelve un código de error si se produce un error.
Estas funciones validan sus parámetros; si buffer
o varname
es NULL
, el controlador de parámetros no válidos se invoca como se describe en Validación de parámetros. Si la ejecución puede continuar, las funciones establecidas en errno
EINVAL
y devuelven EINVAL
.
Si estas funciones no pueden asignar suficiente memoria, se establecen buffer
NULL
en y numberOfElements
en 0 y devuelven ENOMEM
.
Comentarios
Las _dupenv_s_dbg
funciones y _wdupenv_s_dbg
son idénticas a _dupenv_s
y _wdupenv_s
, salvo que, cuando _DEBUG
se define, estas funciones usan la versión de depuración de malloc
, _malloc_dbg
, para asignar memoria para el valor de la variable de entorno. Para obtener información sobre las características de depuración de _malloc_dbg
, vea _malloc_dbg
.
No es necesario llamar explícitamente a estas funciones en la mayoría de los casos. En lugar de ello, se puede definir la marca _CRTDBG_MAP_ALLOC
. Si se define _CRTDBG_MAP_ALLOC
, las llamadas a _dupenv_s
y _wdupenv_s
se reasignan a _dupenv_s_dbg
y _wdupenv_s_dbg
, respectivamente, con el parámetro blockType
establecido en _NORMAL_BLOCK
. Por lo tanto, no es necesario llamar explícitamente a estas funciones a menos que desee marcar los bloques del montón como _CLIENT_BLOCK
. Para obtener más información sobre los tipos de bloques, consulte Tipos de bloques en el montón de depuración.
Asignaciones de rutinas de texto genérico
Rutina TCHAR.H | _UNICODE y _MBCS no definidos |
_MBCS definido |
_UNICODE definido |
---|---|---|---|
_tdupenv_s_dbg |
_dupenv_s_dbg |
_dupenv_s_dbg |
_wdupenv_s_dbg |
Requisitos
Routine | Encabezado necesario |
---|---|
_dupenv_s_dbg |
<crtdbg.h> |
_wdupenv_s_dbg |
<crtdbg.h> |
Para obtener más información sobre compatibilidad, consulte Compatibilidad.
Ejemplo
// 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)
Vea también
Control de procesos y entornos
Constantes de entorno
getenv_s
, _wgetenv_s
_putenv_s
, _wputenv_s