Exportar (0) Imprimir
Expandir todo
div
EOF
Expandir Minimizar
Este artículo proviene de un motor de traducción automática. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original

_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 
);

lBreakAlloc

Número de orden de asignación, para establecer el punto de interrupción.

Devuelve el número de orden de asignación anterior del objeto que tenía un punto de interrupción establecido.

_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.

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.

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

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.

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft