_CrtSetBreakAlloc
Establezca un punto de interrupción en un número de orden especificado de la asignación de objetos (versión de depuración solo).
long _CrtSetBreakAlloc(
long lBreakAlloc
);
Parámetros
- lBreakAlloc
Número de orden de asignación, para establecer el punto de interrupción.
Valor devuelto
Devuelve el número de orden de asignación anterior del objeto que tenía un punto de interrupción establecido.
Comentarios
_CrtSetBreakAlloc permite que una aplicación para realizar la detección de pérdidas de memoria y en un momento concreto de asignación de memoria y la traza de nuevo en el origen de la solicitud.La función utiliza el número de orden secuencial de la asignación de objetos asignados al bloque de memoria cuando se asignó en la pila.Cuando _DEBUG no está definido, las llamadas a _CrtSetBreakAlloc se quitan durante el preprocesamiento.
El número de orden de asignación de objeto se almacena en el campo más lRequest de la estructura de _CrtMemBlockHeader , definido en Crtdbg.h.Cuando la información sobre un bloque de memoria es designada por una de las funciones de volcado de depuración, este número es entre llaves, como {36}.
Para obtener más información sobre cómo _CrtSetBreakAlloc se puede utilizar con otras funciones de administración de memoria, vea Las solicitudes de asignación en el montón de seguimiento.
Requisitos
rutina |
Encabezado necesario |
---|---|
_CrtSetBreakAlloc |
<crtdbg.h> |
Para obtener más información de compatibilidad, vea compatibilidad en la Introducción.
bibliotecas
Versiones de depuración de Bibliotecas en tiempo de ejecución de C únicamente.
Ejemplo
// 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 en .NET Framework
No es aplicable Para llamar a la función estándar de C, utilice PInvoke. Para obtener más información, vea La invocación de plataforma ejemplos.