_dupenv_s_dbg
, _wdupenv_s_dbg
Получают значение из текущей среды. Версии, _wdupenv_s
которые выделяют память для _malloc_dbg
предоставления дополнительных сведений _dupenv_s
об отладке.
Синтаксис
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
);
Параметры
buffer
Буфер для хранения значения переменной.
numberOfElements
Размер buffer
.
varname
Имя переменной среды.
blockType
Запрошенный тип блока памяти: _CLIENT_BLOCK
или _NORMAL_BLOCK
.
filename
Указатель на имя исходного файла или NULL
.
lineNumber
Номер строки в исходном файле или NULL
.
Возвращаемое значение
Нуль при успешном выполнении, код ошибки при сбое.
Эти функции проверяют их параметры; Если buffer
или varname
есть NULL
, обработчик недопустимых параметров вызывается, как описано в разделе "Проверка параметров". Если выполнение разрешено продолжать, функции, заданные errno
как EINVAL
, и возвращаются EINVAL
.
Если эти функции не могут выделить достаточно памяти, они задают buffer
значение NULL
numberOfElements
0 и возвращаются ENOMEM
.
Замечания
_wdupenv_s_dbg
Функции _dupenv_s_dbg
идентичны и _wdupenv_s
за _dupenv_s
исключением того, что при _DEBUG
определении эти функции используют отладочную версию malloc
, _malloc_dbg
чтобы выделить память для значения переменной среды. Дополнительные сведения о функциях отладки _malloc_dbg
см. в статье _malloc_dbg
.
В большинстве случаев эти функции не нужно вызывать явным образом. Вместо этого можно определить флаг _CRTDBG_MAP_ALLOC
. Если определен флаг _CRTDBG_MAP_ALLOC
, вызовы функций _dupenv_s
и _wdupenv_s
повторно сопоставляются с _dupenv_s_dbg
и _wdupenv_s_dbg
соответственно, а для параметра blockType
задается флаг _NORMAL_BLOCK
. Таким образом, вам не нужно явно вызывать эти функции, если вы не хотите пометить блоки кучи как _CLIENT_BLOCK
. Дополнительные сведения о типах блоков см. в разделе Типы блоков в отладочной куче.
Сопоставления подпрограмм универсального текста
Подпрограмма TCHAR.H | _UNICODE и _MBCS не определен |
_MBCS Определенные |
_UNICODE Определенные |
---|---|---|---|
_tdupenv_s_dbg |
_dupenv_s_dbg |
_dupenv_s_dbg |
_wdupenv_s_dbg |
Требования
Маршрут | Обязательный заголовок |
---|---|
_dupenv_s_dbg |
<crtdbg.h> |
_wdupenv_s_dbg |
<crtdbg.h> |
Дополнительные сведения о совместимости см. в разделе Совместимость.
Пример
// 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)
См. также
Управление процессами и средой
Константы окружающей среды
getenv_s
, _wgetenv_s
_putenv_s
, _wputenv_s