_dupenv_s_dbg
, _wdupenv_s_dbg
Obter um valor do ambiente atual. Versões do _dupenv_s
, _wdupenv_s
que alocam memória com _malloc_dbg
para fornecer mais informações de depuração.
Sintaxe
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
);
Parâmetros
buffer
Buffer para armazenar o valor da variável.
numberOfElements
Tamanho de buffer
.
varname
Nome da variável de ambiente.
blockType
Tipo de bloco de memória solicitado: _CLIENT_BLOCK
ou _NORMAL_BLOCK
.
filename
Ponteiro para o nome do arquivo de origem ou NULL
.
lineNumber
O número de linha no arquivo de origem ou NULL
.
Valor retornado
Zero em caso de êxito; código de erro em caso de falha.
Essas funções validam seus parâmetros; if buffer
ou varname
is NULL
, o manipulador de parâmetro inválido é invocado conforme descrito em Validação de parâmetro. Se a execução tiver permissão para continuar, as funções definidas errno
como EINVAL
e retornarão EINVAL
.
Se essas funções não puderem alocar memória suficiente, elas serão definidas buffer
como NULL
e numberOfElements
como 0 e retornarão ENOMEM
.
Comentários
As _dupenv_s_dbg
funções and _wdupenv_s_dbg
são idênticas e _wdupenv_s
_dupenv_s
exceto que, quando _DEBUG
definidas, essas funções usam a versão de depuração de malloc
, _malloc_dbg
, para alocar memória para o valor da variável de ambiente. Para obter informações sobre os recursos de depuração do _malloc_dbg
, consulte _malloc_dbg
.
Você não precisa chamar essas funções explicitamente na maioria dos casos. Em vez disso, você pode definir o sinalizador _CRTDBG_MAP_ALLOC
. Quando _CRTDBG_MAP_ALLOC
é definido, as chamadas a _dupenv_s
e _wdupenv_s
são remapeadas para _dupenv_s_dbg
e _wdupenv_s_dbg
, respectivamente, com o blockType
definido como _NORMAL_BLOCK
. Portanto, você não precisa chamar essas funções explicitamente, a menos que queira marcar os blocos de heap como _CLIENT_BLOCK
. Para obter mais informações sobre os tipos de bloco, consulte Tipos de blocos no heap de depuração.
Mapeamentos de rotina de texto genérico
Rotina TCHAR.H | _UNICODE e _MBCS não definidos |
_MBCS definido |
_UNICODE definido |
---|---|---|---|
_tdupenv_s_dbg |
_dupenv_s_dbg |
_dupenv_s_dbg |
_wdupenv_s_dbg |
Requisitos
Rotina | Cabeçalho necessário |
---|---|
_dupenv_s_dbg |
<crtdbg.h> |
_wdupenv_s_dbg |
<crtdbg.h> |
Para obter informações sobre compatibilidade, consulte Compatibilidade.
Exemplo
// 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)
Confira também
Controle de processo e ambiente
Constantes ambientais
getenv_s
, _wgetenv_s
_putenv_s
, _wputenv_s