次の方法で共有


_dupenv_s_dbg, _wdupenv_s_dbg

現在の環境から値を取得します。 _dupenv_sのバージョン。より多くのデバッグ情報を提供するために_malloc_dbgを使用してメモリを割り当てる_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 または varnameNULLされている場合は、「パラメーターの検証 で説明されているように、無効なパラメーター ハンドラーが呼び出されます。 実行を続行できる場合、関数はerrnoEINVALに設定され、EINVALが返されます。

これらの関数で十分なメモリを割り当てることができない場合は、 bufferNULL に設定し、 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 の呼び出しはそれぞれ _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