_CrtSetBreakAlloc
Define um ponto de interrupção em um número de pedido de alocação do objeto especificado (somente versão de depurar).
long _CrtSetBreakAlloc(
long lBreakAlloc
);
Parâmetros
- lBreakAlloc
Número de pedido de alocação para o qual você deseja conjunto o ponto de interrupção.
Valor de retorno
Retorna o número de pedido de alocação de objeto anterior que tinha um ponto de interrupção definido.
Comentários
_CrtSetBreakAlloc permite que um aplicativo executar a detecção de perda de memória por recentes em um ponto específico de alocação de memória e rastreamento de volta à origem da solicitação. A função usa o número de ordem de alocação de objeto seqüencial atribuído a memória bloqueada quando foi alocada no heap.Quando _DEBUG não estiver definido, chamadas de _CrtSetBreakAlloc serão removidos durante a pré-processamento.
O número de pedido de alocação de objeto é armazenado no lRequest campo de do _CrtMemBlockHeader estrutura, definida no Crtdbg.h.Quando informações sobre um bloco de memória são relatadas por uma das funções de despejo de depurar, esse número está entre chaves, sistema autônomo {36}.
Para obter mais informações sobre como _CrtSetBreakAlloc pode ser usado com outras funções de gerenciamento de memória, consulte acompanhamento 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 depurar de Bibliotecas de time 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);
}
Equivalente do NET Framework
Não aplicável. Para telefonar a função C padrão, use PInvoke. Para obter mais informações, consulte Exemplos de invocação de plataforma.