_dupenv_s_dbg
, _wdupenv_s_dbg
Dapatkan nilai dari lingkungan saat ini. _dupenv_s
Versi , _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
buffer
Ukuran .
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_dbg
penelusuran 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
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk