Sdílet prostřednictvím


_dupenv_s_dbg, _wdupenv_s_dbg

Získá hodnotu z aktuálního prostředí. _dupenv_sVerze , _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 EINVALa 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í ENOMEMhodnotu .

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_dbgk přidělení paměti pro hodnotu proměnné prostředí. Informace o funkcích ladění naleznete _malloc_dbgv 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_BLOCKblockType . 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 Definovány _UNICODE Definovány
_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