_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 información de depuración adicional.
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 para almacenar el valor de la variable.numberOfElements
Tamaño de buffer.varname
Nombre de la variable de entorno.blockType
Tipo solicitado del bloque de memoria: _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
Cero en correctamente, un código de error del error.
estas funciones validan sus parámetros; si buffer o varname es NULL, se invoca el controlador no válido del parámetro tal como se describe en Validación de parámetros.Si la ejecución puede continuar, errno establecido funciones a EINVAL y a EINVALreturn.
Si estas funciones no pueden asignar suficiente memoria, establecen buffer a NULL y a numberOfElements a 0, y devuelven ENOMEM.
Comentarios
Las funciones de _dupenv_s_dbg y de _wdupenv_s_dbg son idénticas a _dupenv_s y a _wdupenv_s salvo que, cuando _DEBUG está definido, estas funciones utilizan 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 necesita llamar a estas funciones explícitamente en la mayoría de los casos.En su lugar, puede definir el marcador _CRTDBG_MAP_ALLOC.Cuando _CRTDBG_MAP_ALLOC está definido, las llamadas a _dupenv_sy _wdupenv_s se reasignan a _dupenv_s_dbg y a _wdupenv_s_dbg, respectivamente, con blockType establecido en _NORMAL_BLOCK.Por consiguiente, no necesita llamar a estas funciones explícitamente a menos que desee marcar los bloques de pila como _CLIENT_BLOCK.Para obtener más información sobre tipos bloqueados, vea Tipos de bloques en el montón de depuración.
Asignaciones de la rutina de texto genérico
rutina de TCHAR.H |
_UNICODE y _MBCS no definido |
_MBCS definido |
_UNICODE definido |
---|---|---|---|
_tdupenv_s_dbg |
_dupenv_s_dbg |
_dupenv_s_dbg |
_wdupenv_s_dbg |
Requisitos
rutina |
Encabezado necesario |
---|---|
_dupenv_s_dbg |
<crtdbg.h> |
_wdupenv_s_dbg |
<crtdbg.h> |
Para obtener información adicional de compatibilidad, vea compatibilidad en la Introducción.
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
}
Resultados del ejemplo
pathext = .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.pl
nonexistentvariable = (null)
Equivalente en .NET Framework
System:: entorno:: GetEnvironmentVariable