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