Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Проверяет, что указатель не имеет значения 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 и более поздних версиях size access параметры игнорируются и _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 .