_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
個位元組之記憶體範圍,驗證其是否能有效用於指定的一或多個存取範圍作業。 當 設定為 TRUE
時access
,記憶體範圍會同時驗證讀取和寫入。 當 為 FALSE
時access
,記憶體範圍只會經過驗證以供讀取。 若未定義 _DEBUG
,將會在前置處理期間移除對 _CrtIsValidPointer
的呼叫。
因為此函式會傳 TRUE
回 或 FALSE
,所以可以傳遞至其中 _ASSERT
一個巨集,以建立基本的偵錯錯誤處理機制。 如果記憶體範圍對讀取和寫入作業無效,下列範例會導致判斷提示失敗:
_ASSERTE( _CrtIsValidPointer( address, size, TRUE ) );
如需如何 _CrtIsValidPointer
搭配其他偵錯函式和巨集使用的詳細資訊,請參閱 報告巨集。 如需如何在基底堆積偵錯版本中配置、初始化及管理記憶體區塊的相關信息,請參閱 CRT 偵錯堆積詳細數據。
需求
常式 | 必要的標頭 |
---|---|
_CrtIsValidPointer |
<crtdbg.h> |
_CrtIsValidPointer
是 Microsoft 擴充功能。 如需相容性資訊,請參閱相容性。
程式庫
僅限偵錯版本的 C 執行階段程式庫。
範例
請參閱文章的 _CrtIsValidHeapPointer
範例。