Udostępnij za pośrednictwem


_dupenv_s_dbg, _wdupenv_s_dbg

Pobierz wartość z bieżącego środowiska. Wersje programu _dupenv_s, _wdupenv_s które przydzielają pamięć, _malloc_dbg aby zapewnić więcej informacji o debugowaniu.

Składnia

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
Bufor do przechowywania wartości zmiennej.

numberOfElements
bufferRozmiar .

varname
Nazwa zmiennej środowiskowej.

blockType
Żądany typ bloku pamięci: _CLIENT_BLOCK lub _NORMAL_BLOCK.

filename
Wskaźnik na nazwę pliku źródłowego lub NULL.

lineNumber
Numer wiersza w pliku źródłowym lub NULL.

Wartość zwracana

Zero w przypadku powodzenia, kod błędu w przypadku błędu.

Te funkcje weryfikują swoje parametry; jeśli buffer lub varname ma NULLwartość , wywoływana jest nieprawidłowa procedura obsługi parametrów zgodnie z opisem w temacie Weryfikacja parametrów. Jeśli wykonywanie jest dozwolone do kontynuowania, funkcje ustawione errno na EINVAL, i zwracają wartość EINVAL.

Jeśli te funkcje nie mogą przydzielić wystarczającej ilości pamięci, są ustawione buffer na NULL i numberOfElements na 0 i zwracają wartość ENOMEM.

Uwagi

Funkcje _dupenv_s_dbg i _wdupenv_s_dbg są identyczne z _dupenv_s elementami i _wdupenv_s z tą różnicą, że gdy _DEBUG jest zdefiniowana, te funkcje używają wersji mallocdebugowania , _malloc_dbgw celu przydzielenia pamięci dla wartości zmiennej środowiskowej. Aby uzyskać informacje na temat funkcji debugowania programu _malloc_dbg, zobacz _malloc_dbg.

W większości przypadków nie trzeba jawnie wywoływać tych funkcji. Zamiast tego można zdefiniować flagę _CRTDBG_MAP_ALLOC. Po _CRTDBG_MAP_ALLOC zdefiniowaniu wywołania metody _dupenv_s i _wdupenv_s są odpowiednio mapowane na _dupenv_s_dbg wartości i _wdupenv_s_dbgz ustawioną wartością blockType _NORMAL_BLOCK. W związku z tym nie trzeba jawnie wywoływać tych funkcji, chyba że chcesz oznaczyć bloki sterty jako _CLIENT_BLOCK. Aby uzyskać więcej informacji na temat typów bloków, zobacz Typy bloków na stercie debugowania.

Mapowania procedur tekstu ogólnego

Procedura TCHAR.H _UNICODE i _MBCS niezdefiniowane _MBCS zdefiniowany _UNICODE zdefiniowany
_tdupenv_s_dbg _dupenv_s_dbg _dupenv_s_dbg _wdupenv_s_dbg

Wymagania

Procedura Wymagany nagłówek
_dupenv_s_dbg <crtdbg.h>
_wdupenv_s_dbg <crtdbg.h>

Aby uzyskać więcej informacji o zgodności, zobacz Zgodność.

Przykład

// 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)

Zobacz też

Kontrola procesu i środowiska
Stałe środowiskowe
getenv_s, _wgetenv_s
_putenv_s, _wputenv_s