_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
の場合buffer
はNULL
、「パラメーターの検証」の説明に従って無効なパラメーター ハンドラーが呼び出されます。 実行を続行できる場合、関数は 、にEINVAL
設定errno
され、.EINVAL
これらの関数が十分なメモリを割り当てることができない場合は、0 にNULL
numberOfElements
設定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)
関連項目
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示