_dupenv_s_dbg
, _wdupenv_s_dbg
Ottiene un valore dall'ambiente corrente. Versioni di _dupenv_s
, _wdupenv_s
che allocano memoria con _malloc_dbg
per fornire altre informazioni di debug.
Sintassi
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
);
Parametri
buffer
Buffer per l'archiviazione del valore della variabile.
numberOfElements
Dimensioni di buffer
.
varname
Nome della variabile di ambiente.
blockType
Tipo di blocco di memoria richiesto: _CLIENT_BLOCK
o _NORMAL_BLOCK
.
filename
Puntatore al nome del file di origine o a NULL
.
lineNumber
File di riga nel file di origine o NULL
.
Valore restituito
Zero se eseguita correttamente, un codice di errore se non eseguita correttamente.
Queste funzioni convalidano i relativi parametri; se buffer
o varname
è NULL
, il gestore di parametri non validi viene richiamato come descritto in Convalida dei parametri. Se l'esecuzione può continuare, le funzioni impostate su errno
EINVAL
e restituiscono EINVAL
.
Se queste funzioni non possono allocare memoria sufficiente, impostano su buffer
NULL
e numberOfElements
su 0 e restituiscono ENOMEM
.
Osservazioni:
Le _dupenv_s_dbg
funzioni e _wdupenv_s_dbg
sono identiche a _dupenv_s
e _wdupenv_s
tranne che, quando _DEBUG
viene definito, queste funzioni usano la versione di debug di malloc
, _malloc_dbg
per allocare memoria per il valore della variabile di ambiente. Per informazioni sulle funzionalità di debug di _malloc_dbg
, vedere _malloc_dbg
.
Non è necessario chiamare queste funzioni in modo esplicito nella maggior parte dei casi. In alternativa, è possibile definire il flag _CRTDBG_MAP_ALLOC
. Quando _CRTDBG_MAP_ALLOC
è definito, le chiamate a _dupenv_s
e _wdupenv_s
vengono mappate nuovamente a _dupenv_s_dbg
e _wdupenv_s_dbg
rispettivamente, con blockType
impostato su _NORMAL_BLOCK
. Pertanto, non è necessario chiamare queste funzioni in modo esplicito, a meno che non si voglia contrassegnare i blocchi dell'heap come _CLIENT_BLOCK
. Per altre informazioni sui tipi di blocco, vedere Types of blocks on the debug heap (Tipi di blocchi sull'heap di debug).
Mapping di routine di testo generico
Routine TCHAR.H | _UNICODE e _MBCS non definito |
_MBCS definito |
_UNICODE definito |
---|---|---|---|
_tdupenv_s_dbg |
_dupenv_s_dbg |
_dupenv_s_dbg |
_wdupenv_s_dbg |
Requisiti
Ciclo | Intestazione obbligatoria |
---|---|
_dupenv_s_dbg |
<crtdbg.h> |
_wdupenv_s_dbg |
<crtdbg.h> |
Per altre informazioni sulla compatibilità, vedere Compatibility (Compatibilità).
Esempio
// 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)
Vedi anche
Processo e controllo dell'ambiente
Costanti ambientali
getenv_s
, _wgetenv_s
_putenv_s
, _wputenv_s