Share via


_dupenv_s_dbg、_wdupenv_s_dbg

更新 : 2007 年 11 月

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

これらの関数は、パラメータを検証します。buffer または varname が NULL の場合、「パラメータの検証」に説明されているように、無効なパラメータ ハンドラが呼び出されます。実行の継続が許可された場合、この関数は errno を EINVAL に設定し、EINVAL を返します。

十分なメモリを割り当てられない場合、これらの関数は buffer を NULL に、numberOfElements を 0 に設定し、ENOMEM を返します。

解説

_dupenv_s_dbg と _wdupenv_s_dbg 関数は、_DEBUG が定義されている場合に malloc_malloc_dbg のデバッグ バージョンを使用して環境変数の値にメモリを割り当てることを除いて、_dupenv_s と _wdupenv_s 関数と同じです。_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>

互換性の詳細については、「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