Compartilhar via


_CrtSetBreakAlloc

Define um ponto de interrupção em um número de pedido de alocação do objeto especificado (somente a versão de depuração).

long _CrtSetBreakAlloc( 
   long lBreakAlloc 
);

Parâmetros

  • lBreakAlloc
    Número de pedido de alocação para o qual deseja definir o ponto de interrupção.

Valor de retorno

Retorna o número de pedido de alocação objeto anterior que havia um ponto de interrupção definido.

Comentários

_CrtSetBreakAllocpermite que um aplicativo executar a detecção de vazamento de memória por mais recentes em um ponto específico de alocação de memória e o rastreamento de volta para a origem da solicitação.A função usa o número da ordem seqüencial objeto alocação atribuído ao bloco de memória quando ela foi alocada no heap.Quando _ Debug não está definido, planos de _CrtSetBreakAlloc são removidos durante o pré-processamento.

O número de pedido de alocação de objeto é armazenado na lRequest campo do _CrtMemBlockHeader estrutura, definida em Crtdbg.h.Quando as informações sobre um bloco de memória são relatadas por uma das funções de despejo de depuração, esse número é colocado entre chaves, como, por exemplo, {36}.

Para obter mais informações sobre como _CrtSetBreakAlloc pode ser usado com outras funções de gerenciamento de memória, consulte Rastreamento de solicitações de alocação de Heap.

Requisitos

Rotina

Cabeçalho necessário

_CrtSetBreakAlloc

<crtdbg.h>

Para obter mais informações de compatibilidade, consulte compatibilidade na introdução.

Bibliotecas

Versões de depuração de bibliotecas de tempo de execução c somente.

Exemplo

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

Equivalência do .NET Framework

Não aplicável. Para chamar a função c padrão, use PInvoke. Para obter mais informações, consulte Exemplos de invocação de plataforma.

Consulte também

Referência

Rotinas de depuração