次の方法で共有


_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 は _NORMAL_BLOCK への blockType に設定 _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>

互換性の詳細については、「C ランタイム ライブラリ」の「互換性」を参照してください。

使用例

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

参照

関連項目

プロセス制御と環境制御

環境定数

getenv_s、_wgetenv_s

_putenv_s、_wputenv_s