_dupenv_s_dbg
, _wdupenv_s_dbg
Získá hodnotu z aktuálního prostředí. _dupenv_s
Verze , _wdupenv_s
které přidělují paměť_malloc_dbg
, aby poskytovaly více informací o ladění.
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
);
Parametry
buffer
Vyrovnávací paměť pro uložení hodnoty proměnné.
numberOfElements
Velikost .buffer
varname
Název proměnné prostředí
blockType
Požadovaný typ paměťového bloku: _CLIENT_BLOCK
nebo _NORMAL_BLOCK
.
filename
Ukazatel na název zdrojového souboru nebo NULL
.
lineNumber
Číslo řádku ve zdrojovém souboru nebo NULL
.
Vrácená hodnota
Nula při úspěchu, kód chyby při selhání.
Tyto funkce ověřují své parametry; pokud buffer
nebo varname
je NULL
, je vyvolána neplatná obslužná rutina parametru, jak je popsáno v ověření parametru. Pokud je spuštění povoleno pokračovat, funkce nastavené errno
na EINVAL
a vrátit EINVAL
.
Pokud tyto funkce nemůžou přidělit dostatek paměti, nastaví buffer
se na NULL
hodnotu numberOfElements
0 a vrátí ENOMEM
hodnotu .
Poznámky
Funkce _dupenv_s_dbg
jsou _wdupenv_s_dbg
identické _dupenv_s
s a _wdupenv_s
s tím rozdílem, že pokud _DEBUG
jsou definovány, tyto funkce používají ladicí verzi malloc
, _malloc_dbg
k přidělení paměti pro hodnotu proměnné prostředí. Informace o funkcích ladění naleznete _malloc_dbg
v tématu _malloc_dbg
.
Ve většině případů tyto funkce nemusíte volat explicitně. Místo toho můžete definovat příznak _CRTDBG_MAP_ALLOC
. Pokud _CRTDBG_MAP_ALLOC
je definována, volání a _wdupenv_s
_dupenv_s
jsou znovu namapována _dupenv_s_dbg
a _wdupenv_s_dbg
, v uvedeném pořadí, s nastavenou na _NORMAL_BLOCK
blockType
. Proto není nutné tyto funkce volat explicitně, pokud nechcete označit bloky haldy jako _CLIENT_BLOCK
. Další informace o typech bloků najdete v tématu Typy bloků v haldě ladění.
Mapování rutin obecného textu
Rutina TCHAR.H | _UNICODE a _MBCS není definován |
_MBCS definovaný |
_UNICODE definovaný |
---|---|---|---|
_tdupenv_s_dbg |
_dupenv_s_dbg |
_dupenv_s_dbg |
_wdupenv_s_dbg |
Požadavky
Rutina | Požadovaný hlavičkový soubor |
---|---|
_dupenv_s_dbg |
<crtdbg.h> |
_wdupenv_s_dbg |
<crtdbg.h> |
Další informace o kompatibilitě najdete v tématu Kompatibilita.
Příklad
// 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)
Viz také
Řízení procesů a prostředí
Konstanty prostředí
getenv_s
, _wgetenv_s
_putenv_s
, _wputenv_s