_dupenv_s_dbg, _wdupenv_s_dbg

現在の環境から値を取得します。 _wdupenv_s_dupenv_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 を返します。失敗した場合はエラー コードを返します。

これらの関数は、パラメーターを検証します。varnameの場合bufferNULL、「パラメーターの検証」の説明に従って無効なパラメーター ハンドラーが呼び出されます。 実行を続行できる場合、関数は 、にEINVAL設定errnoされ、.EINVAL

これらの関数が十分なメモリを割り当てることができない場合は、0 にNULLnumberOfElements設定bufferされ、返されますENOMEM

解説

関数_dupenv_s_dbg_wdupenv_s_dbg、定義されている場合_DEBUG、環境変数の値に_dupenv_s_wdupenv_sメモリを割り当てるために 、デバッグ バージョンの malloc、 を_malloc_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>

互換性の詳細については、「 Compatibility」を参照してください。

// 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