_CrtIsMemoryBlock
確認指定的記憶體區塊會在本機的堆積,且具有正確的偵錯堆積區塊型別識別項 (只有在偵錯版本)。
int _CrtIsMemoryBlock(
const void *userData,
unsigned int size,
long *requestNumber,
char **filename,
int *linenumber
);
參數
[in] userData
若要確認記憶體區塊的開頭的指標。[in] size
(以位元組為單位) 指定的區塊大小。[out] requestNumber
區塊配置數目的指標或NULL。[out] filename
要求該區塊的原始程式檔名稱的指標或NULL。[out] linenumber
原始程式檔中的行號的指標或NULL。
傳回值
_CrtIsMemoryBlock傳回TRUE 如果指定的記憶體區塊是位於本機的堆積,而且具有正確的偵錯堆積區塊型別識別項 ; 否則,函數會傳回FALSE。
備註
_CrtIsMemoryBlock函式會驗證指定的記憶體區塊是位於應用程式的本機裝載且具有有效的區塊型別識別項。 這個函式也可用來取得原始要求的記憶體區塊配置物件配置的順序編號和來源檔案名稱/行號。 傳遞非 NULL 值的requestNumber, filename,或linenumber參數原因**_CrtIsMemoryBlock** ,如果在本機的堆積中找到此區塊,將這些參數設定為記憶體區塊的偵錯標頭中的值。 當 _DEBUG 尚未定義,會呼叫**_CrtIsMemoryBlock**在前置處理過程中移除。
如果**_CrtIsMemoryBlock**失敗,則會傳回FALSE輸出參數並初始化為預設值: requestNumber和lineNumber設為 0 和filename設定為 [ NULL。
因為這個函數會傳回TRUE或FALSE,它可以傳遞給其中一個 _ASSERT 巨集] 以建立簡單的偵錯錯誤處理機制。 如果指定的位址不是位於本機的堆積,以下範例會產生判斷提示失敗:
_ASSERTE( _CrtIsMemoryBlock( userData, size, &requestNumber,
&filename, &linenumber ) );
如需有關如何**_CrtIsMemoryBlock**可以搭配其他的偵錯函式和巨集,請參閱來進行驗證和報告使用的巨集。 如需有關如何記憶體區塊會配置、 初始化,而且在基底堆積的偵錯版本管理的資訊,請參閱記憶體管理和偵錯堆積。
需求
常式 |
所需的標頭 |
---|---|
_CrtIsMemoryBlock |
<crtdbg.h> |
如需相容性資訊,請參閱相容性在簡介中。
文件庫
偵錯版本的 C 執行階段程式庫只。
範例
請參閱範例的 _CrtIsValidHeapPointer 主題。
.NET Framework 對等用法
不適用。 若要呼叫標準的 c 函式,使用PInvoke。 如需詳細資訊,請參閱平台叫用範例。