_CrtSetBreakAlloc

设置在指定的订单对象分配编号上设置断点 (请只调试版本)。

long _CrtSetBreakAlloc( 
   long lBreakAlloc 
);

参数

  • lBreakAlloc
    分配订单数,可以设置断点。

返回值

返回放置断点设置以前的对象分配订单号。

备注

_CrtSetBreakAlloc 允许应用程序通过中断执行内存泄漏检测到特定点内存分配和跟踪回请求的原点。函数使用的对象分配订单数量分配内存块时在堆中分配。当 _DEBUG 未定义时,在预处理期间,对 _CrtSetBreakAlloc 中移除。

对象分配订单数量。 lRequest 存储 _CrtMemBlockHeader 结构字段,定义在 Crtdbg.h。当有关的信息内存块时由某个调试转储函数在大括号报表,此数字内,例如 {36}。

有关 _CrtSetBreakAlloc 方式的更多信息可与其他内存管理函数,请参见 跟踪堆分配请求

要求

实例

必需的头

_CrtSetBreakAlloc

crtdbg.h

有关更多兼容性信息,请参见中介绍的 兼容性

只调试 C 运行库 的版本。

示例

// 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);
        _crtBreakAlloc = 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);
}

.NET Framework 等效项

不适用。若要调用标准 C 函数,请使用 PInvoke。有关更多信息,请参见 平台调用示例

请参见

参考

调试实例