_dupenv_s_dbg, _wdupenv_s_dbg
Pobieranie wartości z bieżącego środowiska.Wersje _dupenv_s, _wdupenv_s , przydzielić pamięci z _malloc_dbg o dostarczenie dodatkowych informacji debugowania.
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
Size of buffer.varname
Nazwa zmiennej środowiskowej.blockType
Żądanie typu blok pamięci: _CLIENT_BLOCK lub _NORMAL_BLOCK.filename
Wskaźnik do nazwy pliku źródłowego lub NULL.linenumber
Numer w pliku źródłowym lub NULL.
Wartość zwracana
Ustawić zero na sukces, kod błędu w przypadku awarii.
Te funkcje sprawdzania poprawności ich parametrów; Jeśli buffer lub varname jest NULL, wywoływana jest funkcja obsługi nieprawidłowy parametr, jak opisano w Sprawdzanie poprawności parametru.Jeśli wykonanie może kontynuować, ustawić funkcji errno do EINVAL i zwraca EINVAL.
Jeśli te funkcje nie może przydzielić wystarczającej ilości pamięci, ustaw one buffer do NULL i numberOfElements 0 i return ENOMEM.
Uwagi
_dupenv_s_dbg i _wdupenv_s_dbg funkcje są identyczne z _dupenv_s i _wdupenv_s z wyjątkiem, gdy _DEBUG jest zdefiniowany, funkcje te korzystają z wersji do debugowania funkcja malloc, _malloc_dbg, aby przydzielić pamięci dla wartości zmiennej środowiskowej.Aby uzyskać informacje dotyczące debugowania cechy _malloc_dbg, zobacz _malloc_dbg.
Nie trzeba jawnie wywoływać te funkcje w większości przypadków.Zamiast tego można zdefiniować flaga _CRTDBG_MAP_ALLOC.Gdy _CRTDBG_MAP_ALLOC jest zdefiniowany, wzywa do _dupenv_s i _wdupenv_s są mapowane ponownie do _dupenv_s_dbg i _wdupenv_s_dbg, odpowiednio, z blockType ustawiona na _NORMAL_BLOCK.Dzięki temu, nie trzeba jawnie wywoływać te funkcje, chyba że chcesz oznaczyć bloki sterty jako _CLIENT_BLOCK.Aby uzyskać więcej informacji na temat typów bloku, zobacz Typy bloki na stercie debugowania.
Tekst rodzajowy rutynowych mapowania
TCHAR.Rutynowe H |
_UNICODE & Nie zdefiniowano _MBCS |
_MBCS, definicja |
_UNICODE, definicja |
---|---|---|---|
_tdupenv_s_dbg |
_dupenv_s_dbg |
_dupenv_s_dbg |
_wdupenv_s_dbg |
Wymagania
Rozpoczęto wykonywanie procedury |
Wymaganego nagłówka |
---|---|
_dupenv_s_dbg |
<crtdbg.h> |
_wdupenv_s_dbg |
<crtdbg.h> |
Aby uzyskać dodatkowe informacje o zgodności, zobacz zgodności we wprowadzeniu.
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
}
Przykładowe dane wyjściowe
pathext = .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.pl
nonexistentvariable = (null)
Odpowiednik w programie .NET Framework
System::Environment::GetEnvironmentVariable