Share via


_dupenv_s_dbg, _wdupenv_s_dbg

Dapatkan nilai dari lingkungan saat ini. _dupenv_sVersi , _wdupenv_s yang mengalokasikan memori dengan _malloc_dbg untuk memberikan informasi penelusuran kesalahan lebih lanjut.

Sintaks

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

Parameter

buffer
Buffer untuk menyimpan nilai variabel.

numberOfElements
bufferUkuran .

varname
Nama variabel lingkungan.

blockType
Jenis blok memori yang diminta: _CLIENT_BLOCK atau _NORMAL_BLOCK.

filename
Arahkan ke nama file sumber atau NULL.

lineNumber
Nomor baris dalam file sumber atau NULL.

Nilai hasil

Nol pada keberhasilan, kode kesalahan pada kegagalan.

Fungsi-fungsi ini memvalidasi parameternya; jika buffer atau varname adalah NULL, handler parameter yang tidak valid dipanggil seperti yang dijelaskan dalam Validasi parameter. Jika eksekusi diizinkan untuk melanjutkan, fungsi diatur errno ke EINVAL, dan mengembalikan EINVAL.

Jika fungsi-fungsi ini tidak dapat mengalokasikan memori yang cukup, fungsi tersebut diatur buffer ke NULL dan numberOfElements ke 0, dan mengembalikan ENOMEM.

Keterangan

Fungsi _dupenv_s_dbg dan _wdupenv_s_dbg identik dengan _dupenv_s dan _wdupenv_s kecuali bahwa, ketika _DEBUG didefinisikan, fungsi-fungsi ini menggunakan versi debug dari malloc, _malloc_dbg, untuk mengalokasikan memori untuk nilai variabel lingkungan. Untuk informasi tentang fitur _malloc_dbgpenelusuran kesalahan , lihat _malloc_dbg.

Anda tidak perlu memanggil fungsi-fungsi ini secara eksplisit dalam banyak kasus. Sebagai gantinya, Anda dapat menentukan bendera _CRTDBG_MAP_ALLOC. Ketika _CRTDBG_MAP_ALLOC didefinisikan, panggilan ke _dupenv_s dan _wdupenv_s dipetakan ulang ke _dupenv_s_dbg dan _wdupenv_s_dbg, masing-masing, dengan blockType diatur ke _NORMAL_BLOCK. Dengan demikian, Anda tidak perlu memanggil fungsi-fungsi ini secara eksplisit kecuali Anda ingin menandai blok tumpukan sebagai _CLIENT_BLOCK. Untuk informasi selengkapnya tentang jenis blok, lihat Jenis blok pada tumpukan debug.

Pemetaan rutin teks generik

TCHAR. Rutinitas H _UNICODE dan _MBCS tidak ditentukan _MBCS Didefinisikan _UNICODE Didefinisikan
_tdupenv_s_dbg _dupenv_s_dbg _dupenv_s_dbg _wdupenv_s_dbg

Persyaratan

Rutin Header yang diperlukan
_dupenv_s_dbg <crtdbg.h>
_wdupenv_s_dbg <crtdbg.h>

Untuk informasi kompatibilitas selengkapnya, lihat Kompatibilitas.

Contoh

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

Baca juga

Kontrol proses dan lingkungan
Konstanta lingkungan
getenv_s, _wgetenv_s
_putenv_s, _wputenv_s