共用方式為


_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的行號。

傳回值

如果成功,就是零,如果失敗,則為錯誤碼。

這些函式會驗證它們的參數;如果 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 分別重新對應至 _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)

.NET Framework 對等用法

System::Environment::GetEnvironmentVariable

請參閱

參考

流程控制和環境控制

環境常數

getenv_s、_wgetenv_s

_putenv_s、_wputenv_s