_dupenv_s_dbg, _wdupenv_s_dbg
Získáte hodnoty z aktuálního prostředí. Verze _dupenv_s, _wdupenv_s , přidělení paměti s _malloc_dbg k poskytování dalších informací o ladění.
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 ukládání hodnot proměnné.numberOfElements
Velikost buffer.varname
Název proměnné prostředí.blockType
Požádal o typu bloku paměti: _CLIENT_BLOCK nebo _NORMAL_BLOCK.filename
Ukazatel myši na název zdrojového souboru nebo NULL.linenumber
Číslo řádku na zdrojovém souboru nebo NULL.
Vrácená hodnota
Nula při úspěchu; při selhání kód chyby.
Tyto funkce ověřují své parametry; pokud je buffer nebo varnameNULL, je vyvolána obslužná rutina neplatného parametru, jak je popsáno v tématu Ověření parametru.Pokud smí provádění pokračovat, funkce nastaví errno na EINVAL a vrátí EINVAL.
Pokud těmto funkcím nelze přidělit dostatek paměti, nastaví buffer na NULL a numberOfElements na 0 a vrátí ENOMEM.
Poznámky
_dupenv_s_dbg a _wdupenv_s_dbg funkce jsou shodné s _dupenv_s a _wdupenv_s s tím rozdílem, že při _DEBUG je definována, tyto funkce použít ladicí verze malloc, _malloc_dbg, přidělení paměti pro hodnotu proměnné prostředí.Další informace o ladění funkce _malloc_dbg, viz _malloc_dbg.
Není nutné explicitně volat tyto funkce ve většině případů.Místo toho můžete definovat příznak _CRTDBG_MAP_ALLOC.Při _CRTDBG_MAP_ALLOC je definována, volání _dupenv_s a _wdupenv_s jsou mapovány na _dupenv_s_dbg a _wdupenv_s_dbg, resp. se blockType nastavena na _NORMAL_BLOCK.Proto není nutné explicitně volat tyto funkce, pokud chcete označit jako bloky haldy _CLIENT_BLOCK.Další informace o blokovaných typech naleznete v tématu typů bloků na ladění haldy.
Rutinní mapování obecného textu
Rutina TCHAR.H |
_UNICODE & _MBCS není definováno |
_MBCS definováno |
_UNICODE definováno |
---|---|---|---|
_tdupenv_s_dbg |
_dupenv_s_dbg |
_dupenv_s_dbg |
_wdupenv_s_dbg |
Požadavky
Rutina |
Požadované záhlaví |
---|---|
_dupenv_s_dbg |
<crtdbg.h> |
_wdupenv_s_dbg |
<crtdbg.h> |
Další informace o kompatibilitě naleznete v úvodu 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
}
Výstup ukázky
pathext = .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.pl
nonexistentvariable = (null)
Ekvivalent v rozhraní .NET Framework
System::Environment::GetEnvironmentVariable