_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
buffer
Rozmiar .
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 NULL
wartość , 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 malloc
debugowania , _malloc_dbg
w 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_dbg
z 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