_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으로 NULLnumberOfElements 설정하고 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