Share via


_CrtIsMemoryBlock

確認指定的記憶體區塊位於本機堆積,且具有有效的偵錯堆積區塊類型識別項 (僅限偵錯版本)。

語法

int _CrtIsMemoryBlock(
   const void *userData,
   unsigned int size,
   long *requestNumber,
   char **filename,
   int *lineNumber
);

參數

userData
要確認之記憶體區塊開頭的指標。

size
指定區塊的大小 (以位元組為單位)。

requestNumber
區塊之配置數目的指標,或為 NULL

filename
要求區塊之原始程式檔名的指標,或為 NULL

lineNumber
原始程式檔中行號的指標,或為 NULL

傳回值

如果指定的記憶體區塊位於本機堆積,且具有有效的偵錯堆積區塊類型識別項,_CrtIsMemoryBlock 會傳回 TRUE;否則函式會傳回 FALSE

備註

_CrtIsMemoryBlock 函式會確認指定的記憶體區塊位於應用程式的本機堆積,且具有有效的區塊類型識別項。 此函式也可用來取得物件配置順序編號,以及原始要求記憶體區塊配置的原始程式檔名/行號。 在 、 或 參數中 requestNumber 傳遞的非 NULL 值會導致 _CrtIsMemoryBlock 在記憶體區塊的偵錯標頭中找到區塊時,將參數設定為記憶體區塊偵錯標頭中的 lineNumberfilename 值。 未定義 時 _DEBUG ,會在前置處理期間移除 對 的 _CrtIsMemoryBlock 呼叫。

如果 _CrtIsMemoryBlock 失敗,則會傳 FALSE 回 ,且輸出參數會初始化為預設值: requestNumberlineNumber 設定為 0,且 filename 設定為 NULL

因為此函式會傳 TRUE 回 或 FALSE ,所以可以傳遞至其中 _ASSERT 一個宏,以建立基本的偵錯錯誤處理機制。 如果指定的位址不在本機堆積內,下列範例會導致判斷提示失敗:

_ASSERTE( _CrtIsMemoryBlock( userData, size, &requestNumber,
          &filename, &linenumber ) );

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

需求

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

如需相容性詳細資訊,請參閱相容性

程式庫

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

範例

請參閱文章的 _CrtIsValidHeapPointer 範例。

另請參閱

偵錯常式