_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
在記憶體區塊的偵錯標頭中找到區塊時,將參數設定為記憶體區塊偵錯標頭中的lineNumber
filename
值。 若未定義 _DEBUG
,將會在前置處理期間移除對 _CrtIsMemoryBlock
的呼叫。
如果 _CrtIsMemoryBlock
失敗,則會傳 FALSE
回 ,且輸出參數會初始化為預設值: requestNumber
且 lineNumber
設定為 0,且 filename
設定為 NULL
。
因為此函式會傳 TRUE
回 或 FALSE
,所以可以傳遞至其中 _ASSERT
一個巨集,以建立基本的偵錯錯誤處理機制。 如果指定的位址不在本機堆積內,下列範例會導致判斷提示失敗:
_ASSERTE( _CrtIsMemoryBlock( userData, size, &requestNumber,
&filename, &linenumber ) );
如需如何 _CrtIsMemoryBlock
搭配其他偵錯函式和巨集使用的詳細資訊,請參閱 報告巨集。 如需如何在基底堆積偵錯版本中配置、初始化及管理記憶體區塊的相關信息,請參閱 CRT 偵錯堆積詳細數據。
需求
常式 | 必要的標頭 |
---|---|
_CrtIsMemoryBlock |
<crtdbg.h> |
如需相容性詳細資訊,請參閱相容性。
程式庫
僅限偵錯版本的 C 執行階段程式庫。
範例
請參閱文章的 _CrtIsValidHeapPointer
範例。