_dupenv_s_dbg
, _wdupenv_s_dbg
현재 환경에서 값을 가져옵니다. 더 많은 디버깅 정보를 제공하기 위해 메모리를 할당하는 의 _dupenv_s
_wdupenv_s
버전입니다._malloc_dbg
구문
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, 실패 시 오류 코드가 나타납니다.
이러한 함수는 해당 매개 변수의 유효성을 검사합니다. if buffer
또는 varname
is, NULL
잘못된 매개 변수 처리기가 매개 변수 유효성 검사에 설명된 대로 호출됩니다. 실행을 계속하도록 허용된 경우 함수는 로 EINVAL
설정 errno
되고 반환EINVAL
됩니다.
이러한 함수가 충분한 메모리를 할당할 수 없는 경우 0으로 NULL
numberOfElements
설정하고 buffer
반환ENOMEM
합니다.
설명
및 함수는 _dupenv_s_dbg
정의되는 경우 _DEBUG
이러한 함수가 디버그 버전의 ,_malloc_dbg
를 사용하여 환경 변수 값malloc
에 대한 메모리를 할당한다는 점을 제외하고 동일합니다 _dupenv_s
_wdupenv_s
._wdupenv_s_dbg
의 디버깅 기능에 _malloc_dbg
대한 자세한 내용은 다음을 참조하세요 _malloc_dbg
.
대부분의 경우 이러한 함수를 명시적으로 호출할 필요가 없습니다. 대신 _CRTDBG_MAP_ALLOC
플래그를 정의할 수 있습니다. _CRTDBG_MAP_ALLOC
을 정의하면 _dupenv_s
및 _wdupenv_s
에 대한 호출이 각각 _dupenv_s_dbg
및 _wdupenv_s_dbg
로 다시 매핑되고 blockType
은 _NORMAL_BLOCK
으로 설정됩니다. 따라서 힙 블록을 _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)
참고 항목
프로세스 및 환경 제어
환경 상수
getenv_s
, _wgetenv_s
_putenv_s
, _wputenv_s