Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
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 EINVALe 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