Share via


_CrtIsValidPointer

確認指標不是 Null。 在 Visual Studio 2010 之前的 C 執行階段程式庫版本中,驗證指定的記憶體範圍是否可有效用於讀取和寫入 (僅限偵錯版本)。

語法

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

參數

address
要測試有效性之記憶體的開頭的指標。

size
指定之記憶體範圍的大小 (位元組)。

access
決定記憶體範圍的讀取/寫入存取範圍。

傳回值

_CrtIsValidPointer 如果指定的指標不是 Null,則傳 TRUE 回 。 在 Visual Studio 2010 之前的 CRT 程式庫版本中,如果記憶體範圍對指定的作業或作業有效,則會傳回 TRUE 。 否則,此函式會傳回 FALSE

備註

在 Visual Studio 2010 和更新版本的 CRT 程式庫中, size 會忽略 和 access 參數,並且 _CrtIsValidPointer 只會驗證指定的 address 不是 Null。 由於此測試很容易自行執行,因此不建議您使用此函式。 在 Visual Studio 2010 之前的版本中,此函式會驗證從 address 開始,並延伸 size 個位元組之記憶體範圍,驗證其是否能有效用於指定的一或多個存取範圍作業。 當 設定為 TRUEaccess ,記憶體範圍會同時驗證讀取和寫入。 當 為 FALSEaccess ,記憶體範圍只會經過驗證以供讀取。 未定義 時 _DEBUG ,會在前置處理期間移除 對 的 _CrtIsValidPointer 呼叫。

因為此函式會傳 TRUE 回 或 FALSE ,所以可以傳遞至其中 _ASSERT 一個宏,以建立基本的偵錯錯誤處理機制。 如果記憶體範圍對讀取和寫入作業無效,下列範例會導致判斷提示失敗:

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

如需如何 _CrtIsValidPointer 搭配其他偵錯函式和宏使用的詳細資訊,請參閱 報告 宏。 如需如何在基底堆積偵錯版本中配置、初始化及管理記憶體區塊的相關資訊,請參閱 CRT 偵錯堆積詳細資料

需求

常式 必要的標頭
_CrtIsValidPointer <crtdbg.h>

_CrtIsValidPointer 是 Microsoft 擴充功能。 如需相容性資訊,請參閱相容性

程式庫

僅限偵錯版本的 C 執行階段程式庫

範例

請參閱文章的 _CrtIsValidHeapPointer 範例。

另請參閱

偵錯常式