_dupenv_s_dbg, _wdupenv_s_dbg
현재 환경에서 값을 가져옵니다. _malloc_dbg으로 메모리를 할당하는 _dupenv_s, _wdupenv_s 버전은 메모리를 할당하는 추가 디버깅 정보를 제공합니다.
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
);
매개 변수
buffer
변수의 값을 저장하는 버퍼입니다.numberOfElements
이 buffer의 크기.varname
환경 변수명blockType
메모리 블록의 형식을 요청합니다. _CLIENT_BLOCK 또는 _NORMAL_BLOCK .filename
소스 파일의 이름에 대한 포인터 또는 NULL .linenumber
소스 파일의 줄 번호 또는 NULL .
반환 값
성공 시 0이고, 실패 시 오류 코드입니다.
이 buffer 혹은 varname 은 NULL 인 경우, 잘못된 매개 변수 처리기는 매개 변수 유효성 검사 로 설명되어 호출되고, 이러한 함수는 매개 변수를 유효하게 합니다. 계속해서 실행하도록 허용된 경우, 이 함수는 errno 를 EINVAL 로 설정하고 EINVAL을 반환합니다.
이러한 함수는 충분한 메모리를 할당할 수 없는 경우, 이들은 buffer 을 NULL 으로 설정하고 numberOfElements 을 0으로, ENOMEM 을 반환합니다.
설명
_dupenv_s_dbg 및 _wdupenv_s_dbg 함수는 _dupenv_s 및 _wdupenv_s 와 동일합니다. _DEBUG 가 정의되었을 때, 이러한 함수는 malloc, _malloc_dbg의 디버그 버전을 사용하여 환경 변수 값에 대 한 메모리를 할당합니다. _malloc_dbg 의 디버깅 기능에 대한 내용은 _malloc_dbg를 참조하십시오.
대부분의 경우에서 이러한 함수를 명시적으로 호출할 필요가 없습니다. 대신, _CRTDBG_MAP_ALLOC 플래그를 정의할 수 있습니다. _CRTDBG_MAP_ALLOC 가 정의되었을 때, _dupenv_s 을 호출하고, _wdupenv_s 는 blockType 을 _NORMAL_BLOCK 로 설정하여 _dupenv_s_dbg 및 _wdupenv_s_dbg 각각에 다시 맵핑됩니다. 따라서, _CLIENT_BLOCK 같이 힙 블록으로 표시 하지 않는 이상 이러한 함수를 명시적으로 호출할 필요가 없습니다 . 블록 형식에 대한 자세한 내용은 디버그 힙의 블록 형식을 참조 하십시오.
제네릭 텍스트 라우팅 매핑
TCHAR.H 루틴 |
_UNICODE 및 _MBCS 정의되지 않음 |
_MBCS 정의됨 |
_UNICODE 정의됨 |
---|---|---|---|
_tdupenv_s_dbg |
_dupenv_s_dbg |
_dupenv_s_dbg |
_wdupenv_s_dbg |
요구 사항
루틴 |
필수 헤더 |
---|---|
_dupenv_s_dbg |
<crtdbg.h> |
_wdupenv_s_dbg |
<crtdbg.h> |
호환성에 대한 자세한 내용은 소개 단원의 호환성 부분을 참조하십시오.
예제
// 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)
해당 .NET Framework 항목
System.Environment::GetEnvironmentVariables