_CrtIsValidPointer

Проверяет, что указатель не имеет значения NULL. В версиях библиотеки времени выполнения языка C, выпущенных до выхода Visual Studio 2010, проверяет, является ли указанный диапазон памяти допустимым для чтения и записи (только отладочная версия).

Синтаксис

int _CrtIsValidPointer(
   const void *address,
   unsigned int size,
   int access
);

Параметры

address
Указывает начало диапазона памяти для проверки.

size
Размер указанного диапазона памяти (в байтах).

access
Доступ на чтение или запись для определения диапазона памяти.

Возвращаемое значение

_CrtIsValidPointer возвращает значение TRUE , если указанный указатель не имеет значения NULL. В версиях библиотекИ CRT до Visual Studio 2010 возвращается TRUE , допустим ли диапазон памяти для указанной операции или операций. В противном случае функция возвращает значение FALSE.

Замечания

В библиотеке CRT в Visual Studio 2010 и более поздних версиях sizeaccess параметры игнорируются и _CrtIsValidPointer проверяются только то, что указанный параметр address не имеет значения NULL. Так как этот тест легко выполнять самостоятельно, мы не рекомендуем использовать эту функцию. В версиях, выпущенных до выхода Visual Studio 2010, эта функция проверяет допустимость диапазона памяти, начинающегося по адресу address и занимающего заданное параметром size количество байт, для указанной операции или операций доступа. Если access задано значение TRUE, диапазон памяти проверяется как для чтения, так и для записи. Если access это FALSEтак, диапазон памяти проверяется только для чтения. Если _DEBUG это не определено, вызовы _CrtIsValidPointer удаляются во время предварительной обработки.

Так как эта функция возвращает TRUE или FALSEпередается одному из _ASSERT макросов, чтобы создать базовый механизм обработки ошибок отладки. В следующем примере возникает сбой утверждения, если диапазон памяти недействителен как для операций чтения, так и для записи:

_ASSERTE( _CrtIsValidPointer( address, size, TRUE ) );

Дополнительные сведения о том, как _CrtIsValidPointer можно использовать с другими функциями отладки и макросами, см. в разделе "Макросы" для создания отчетов. Сведения о выделении, инициализации и управлении блоками памяти в отладочной версии базовой кучи см. в сведениях об отладочной куче CRT.

Требования

Маршрут Обязательный заголовок
_CrtIsValidPointer <crtdbg.h>

_CrtIsValidPointer является расширением Майкрософт. Дополнительные сведения о совместимости см. в разделе Совместимость.

Библиотеки

Только отладочные версии библиотек времени выполнения языка C.

Пример

См. пример статьи _CrtIsValidHeapPointer .

См. также

Отладка подпрограмм