_CrtReportBlockType
特定のデバッグ ヒープ ブロック ポインターに関連付けられたブロックの型および細分化された型を返します。
構文
int _CrtReportBlockType(
const void * pBlock
};
パラメーター
pBlock
有効なデバッグ ヒープ ブロックへのポインター。
戻り値
_CrtReportBlockType
関数は、有効なデバッグ ヒープ ポインターを渡されると、ブロックの型および細分化された型を int
の形式で返します。 無効なポインターを渡された場合、関数は -1 を返します。
解説
_CrtReportBlockType
によって返される型とサブタイプを抽出するには、戻り値にマクロ _BLOCK_TYPE
と_BLOCK_SUBTYPE
(両方とも Crtdbg.h で定義) を使用します。
割り当てブロックの種類とその使用方法については、「デバッグ ヒープ上のブロックの種類を参照してください。
要件
ルーチンによって返される値 | 必須ヘッダー |
---|---|
_CrtReportBlockType |
<crtdbg.h> |
互換性の詳細については、「 Compatibility」を参照してください。
ライブラリ
C ランタイム ライブラリのデバッグ バージョンのみ。
例
// crt_crtreportblocktype.cpp
// compile with: /MDd
#include <malloc.h>
#include <stdio.h>
#include <crtdbg.h>
void __cdecl Dumper(void *ptr, void *)
{
int block = _CrtReportBlockType(ptr);
_RPT3(_CRT_WARN, "Dumper found block at %p: type %d, subtype %d\n", ptr,
_BLOCK_TYPE(block), _BLOCK_SUBTYPE(block));
}
void __cdecl LeakDumper(void *ptr, size_t sz)
{
int block = _CrtReportBlockType(ptr);
_RPT4(_CRT_WARN, "LeakDumper found block at %p:"
" type %d, subtype %d, size %d\n", ptr,
_BLOCK_TYPE(block), _BLOCK_SUBTYPE(block), sz);
}
int main(void)
{
_CrtSetDbgFlag(_CrtSetDbgFlag(_CRTDBG_REPORT_FLAG) |
_CRTDBG_LEAK_CHECK_DF);
_CrtSetReportMode( _CRT_WARN, _CRTDBG_MODE_FILE );
_CrtSetReportFile( _CRT_WARN, _CRTDBG_FILE_STDOUT );
_malloc_dbg(10, _NORMAL_BLOCK , __FILE__, __LINE__);
_malloc_dbg(10, _CLIENT_BLOCK | (1 << 16), __FILE__, __LINE__);
_malloc_dbg(20, _CLIENT_BLOCK | (2 << 16), __FILE__, __LINE__);
_malloc_dbg(30, _CLIENT_BLOCK | (3 << 16), __FILE__, __LINE__);
_CrtDoForAllClientObjects(Dumper, NULL);
_CrtSetDumpClient(LeakDumper);
}
サンプル出力
Dumper found block at 00314F78: type 4, subtype 3
Dumper found block at 00314F38: type 4, subtype 2
Dumper found block at 00314F00: type 4, subtype 1
Detected memory leaks!
Dumping objects ->
crt_crtreportblocktype.cpp(30) : {55} client block at 0x00314F78, subtype 3, 30 bytes long.
Data: < > CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD
crt_crtreportblocktype.cpp(29) : {54} client block at 0x00314F38, subtype 2, 20 bytes long.
Data: < > CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD
crt_crtreportblocktype.cpp(28) : {53} client block at 0x00314F00, subtype 1, 10 bytes long.
Data: < > CD CD CD CD CD CD CD CD CD CD
crt_crtreportblocktype.cpp(27) : {52} normal block at 0x00314EC8, 10 bytes long.
Data: < > CD CD CD CD CD CD CD CD CD CD
Object dump complete.
関連項目
_CrtDoForAllClientObjects
_CrtSetDumpClient
_CrtMemDumpAllObjectsSince
_CrtDumpMemoryLeaks
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示