_dupenv_s_dbg
, _wdupenv_s_dbg
Get a value from the current environment. Versions of _dupenv_s
, _wdupenv_s
that allocate memory with _malloc_dbg
to provide more debugging information.
Syntax
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
);
Parameters
buffer
Buffer to store the variable's value.
numberOfElements
Size of buffer
.
varname
Environment variable name.
blockType
Requested type of the memory block: _CLIENT_BLOCK
or _NORMAL_BLOCK
.
filename
Pointer to the name of the source file or NULL
.
lineNumber
Line number in source file or NULL
.
Return value
Zero on success, an error code on failure.
These functions validate their parameters; if buffer
or varname
is NULL
, the invalid parameter handler is invoked as described in Parameter validation. If execution is allowed to continue, the functions set errno
to EINVAL
, and return EINVAL
.
If these functions can't allocate enough memory, they set buffer
to NULL
and numberOfElements
to 0, and return ENOMEM
.
Remarks
The _dupenv_s_dbg
and _wdupenv_s_dbg
functions are identical to _dupenv_s
and _wdupenv_s
except that, when _DEBUG
is defined, these functions use the debug version of malloc
, _malloc_dbg
, to allocate memory for the value of the environment variable. For information on the debugging features of _malloc_dbg
, see _malloc_dbg
.
You don't need to call these functions explicitly in most cases. Instead, you can define the flag _CRTDBG_MAP_ALLOC
. When _CRTDBG_MAP_ALLOC
is defined, calls to _dupenv_s
and _wdupenv_s
are remapped to _dupenv_s_dbg
and _wdupenv_s_dbg
, respectively, with the blockType
set to _NORMAL_BLOCK
. Thus, you don't need to call these functions explicitly unless you want to mark the heap blocks as _CLIENT_BLOCK
. For more information on block types, see Types of blocks on the debug heap.
Generic-text routine mappings
TCHAR.H routine | _UNICODE and _MBCS not defined |
_MBCS defined |
_UNICODE defined |
---|---|---|---|
_tdupenv_s_dbg |
_dupenv_s_dbg |
_dupenv_s_dbg |
_wdupenv_s_dbg |
Requirements
Routine | Required header |
---|---|
_dupenv_s_dbg |
<crtdbg.h> |
_wdupenv_s_dbg |
<crtdbg.h> |
For more compatibility information, see Compatibility.
Example
// 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)
See also
Process and environment control
Environmental constants
getenv_s
, _wgetenv_s
_putenv_s
, _wputenv_s
Σχόλια
https://aka.ms/ContentUserFeedback.
Σύντομα διαθέσιμα: Καθ' όλη τη διάρκεια του 2024 θα καταργήσουμε σταδιακά τα ζητήματα GitHub ως μηχανισμό ανάδρασης για το περιεχόμενο και θα το αντικαταστήσουμε με ένα νέο σύστημα ανάδρασης. Για περισσότερες πληροφορίες, ανατρέξτε στο θέμα:Υποβολή και προβολή σχολίων για