Aracılığıyla paylaş


_dupenv_s_dbg, _wdupenv_s_dbg

Geçerli ortamdan bir değer alın. _wdupenv_s_dupenv_sdaha fazla hata ayıklama bilgisi sağlamak için ile _malloc_dbg bellek ayıran sürümleri.

Sözdizimi

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
);

Parametreler

buffer
Değişkenin değerini depolamak için arabellek.

numberOfElements
boyutu buffer.

varname
Ortam değişkeni adı.

blockType
İstenen bellek bloğu türü: _CLIENT_BLOCK veya _NORMAL_BLOCK.

filename
Kaynak dosyanın veya NULLadının işaretçisi.

lineNumber
Kaynak dosyadaki veya NULLiçindeki satır numarası.

Dönüş değeri

Başarıda sıfır, hatada hata kodu.

Bu işlevler parametrelerini doğrular; veya buffer varname iseNULL, parametre doğrulamasında açıklandığı gibi geçersiz parametre işleyicisi çağrılır. Yürütmenin devam etmesi için izin verilirse, işlevleri olarak EINVALayarlanır errno ve döndürürEINVAL.

Bu işlevler yeterli bellek ayıramıyorsa, ve numberOfElements değerini 0 olarak ayarlar NULL buffer ve döndürürENOMEM.

Açıklamalar

_dupenv_s_dbg ve _wdupenv_s_dbg işlevleri ile aynıdır _dupenv_s ve _wdupenv_s ancak tanımlandığında_DEBUG, bu işlevler ortam değişkeninin mallocdeğeri için bellek ayırmak için , _malloc_dbg, hata ayıklama sürümünü kullanır. hata ayıklama özellikleri _malloc_dbghakkında bilgi için bkz _malloc_dbg. .

Çoğu durumda bu işlevleri açıkça çağırmanız gerekmez. Bunun yerine bayrağını _CRTDBG_MAP_ALLOCtanımlayabilirsiniz. Tanımlandığında, ve _wdupenv_s çağrıları _dupenv_s sırasıyla blockType ve _wdupenv_s_dbgile yeniden eşlenir _dupenv_s_dbg ve olarak ayarlanır_NORMAL_BLOCK._CRTDBG_MAP_ALLOC Bu nedenle, yığın bloklarını olarak _CLIENT_BLOCKişaretlemek istemediğiniz sürece bu işlevleri açıkça çağırmanız gerekmez. Blok türleri hakkında daha fazla bilgi için bkz . Hata ayıklama yığınındaki blok türleri.

Genel metin yordamı eşlemeleri

TCHAR.H yordamı _UNICODE ve _MBCS tanımlanmadı _MBCS tanımlanan _UNICODE tanımlanan
_tdupenv_s_dbg _dupenv_s_dbg _dupenv_s_dbg _wdupenv_s_dbg

Gereksinimler

Yordam Gerekli başlık
_dupenv_s_dbg <crtdbg.h>
_wdupenv_s_dbg <crtdbg.h>

Daha fazla uyumluluk bilgisi için bkz . Uyumluluk.

Örnek

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

Ayrıca bkz.

İşlem ve ortam denetimi
Ortam sabitleri
getenv_s, _wgetenv_s
_putenv_s, _wputenv_s