_CrtSetBreakAlloc_CrtSetBreakAlloc

指定されたオブジェクト割り当て順序番号にブレークポイントを設定します (デバッグ バージョンのみ)。Sets a breakpoint on a specified object allocation order number (debug version only).

構文Syntax

long _CrtSetBreakAlloc(
   long lBreakAlloc
);

パラメーターParameters

lBreakAlloclBreakAlloc
ブレークポイントを設定する割り当て順序番号。Allocation order number, for which to set the breakpoint.

戻り値Return Value

ブレークポイントが設定されていた、以前のオブジェクト割り当て順序番号を返します。Returns the previous object allocation order number that had a breakpoint set.

解説Remarks

_CrtSetBreakAlloc を使用すると、アプリケーションはメモリ割り当ての特定の時点で中断し、要求の発生元にトレースバックすることによって、メモリリークの検出を実行できます。_CrtSetBreakAlloc allows an application to perform memory leak detection by breaking at a specific point of memory allocation and tracing back to the origin of the request. 関数は、メモリ ブロックがヒープ上に割り当てられたときに決められた、シーケンシャルなオブジェクト割り当て順序番号を使用します。The function uses the sequential object allocation order number assigned to the memory block when it was allocated in the heap. _DEBUGが定義されていない場合、 _CrtSetBreakAlloc の呼び出しはプリプロセス中に削除されます。When _DEBUG is not defined, calls to _CrtSetBreakAlloc are removed during preprocessing.

オブジェクト割り当て順序番号は、Crtdbg.h で定義されている _CrtMemBlockHeader 構造体の lRequest フィールドに格納されます。The object allocation order number is stored in the lRequest field of the _CrtMemBlockHeader structure, defined in Crtdbg.h. メモリブロックに関する情報がいずれかのデバッグダンプ関数によって報告された場合、この数はのように中かっこで囲まれ {36} ます。When information about a memory block is reported by one of the debug dump functions, this number is enclosed in braces, such as {36}.

_CrtSetBreakAlloc を他のメモリ管理関数と共に使用する方法の詳細については、「ヒープ割り当て要求の追跡」を参照してください。For more information about how _CrtSetBreakAlloc can be used with other memory management functions, see Tracking Heap Allocation Requests. デバッグ バージョンのベース ヒープでのメモリ ブロックの割り当て、初期化、管理の方法について詳しくは、「 CRT Debug Heap Details」をご覧ください。For more information about how memory blocks are allocated, initialized, and managed in the debug version of the base heap, see CRT Debug Heap Details.

必要条件Requirements

ルーチンによって返される値Routine 必須ヘッダーRequired header
_CrtSetBreakAlloc_CrtSetBreakAlloc <crtdbg.h>

互換性について詳しくは、「 Compatibility」をご覧ください。For more compatibility information, see Compatibility.

ライブラリLibraries

C ランタイム ライブラリのデバッグ バージョンのみ。Debug versions of C run-time libraries only.

Example

// crt_setbrkal.c
// compile with: -D_DEBUG /MTd -Od -Zi -W3 /c /link -verbose:lib -debug

/*
* In this program, a call is made to the _CrtSetBreakAlloc routine
* to verify that the debugger halts program execution when it reaches
* a specified allocation number.
*/

#include <malloc.h>
#include <crtdbg.h>

int main( )
{
        long allocReqNum;
        char *my_pointer;

        /*
         * Allocate "my_pointer" for the first
         * time and ensure that it gets allocated correctly
         */
        my_pointer = malloc(10);
        _CrtIsMemoryBlock(my_pointer, 10, &allocReqNum, NULL, NULL);

        /*
         * Set a breakpoint on the allocation request
         * number for "my_pointer"
         */
        _CrtSetBreakAlloc(allocReqNum+2);

        /*
         * Alternate freeing and reallocating "my_pointer"
         * to verify that the debugger halts program execution
         * when it reaches the allocation request
         */
        free(my_pointer);
        my_pointer = malloc(10);
        free(my_pointer);
        my_pointer = malloc(10);
        free(my_pointer);
}

関連項目See also

デバッグルーチンDebug Routines