共用方式為


_dupenv_s_dbg, _wdupenv_s_dbg

從目前環境取得值 _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

傳回值

若成功,就是零;若失敗,則為錯誤碼。

這些函式會驗證其參數;如果 buffervarnameNULL ,則會叫用不正確參數處理常式,如參數驗證 中所述 。 如果允許繼續執行,函式會設定 errnoEINVAL ,並傳回 EINVAL

如果這些函式無法配置足夠的記憶體,則會將 設定 bufferNULLnumberOfElements 0,並傳回 ENOMEM

備註

和 函 _dupenv_s_dbg 式與 _dupenv_s_wdupenv_s 函式相同,但定義時 _DEBUG ,這些函式會使用 的偵錯版本 malloc_malloc_dbg 來配置記憶體給環境變數 _wdupenv_s_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>

如需相容性詳細資訊,請參閱相容性

範例

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