_CrtSetBreakAlloc

 

Visual Studio 2017 RC에 대한 최신 설명서는 Visual Studio 2017 RC 설명서를 참조하세요.

지정된 개체 할당 순서 번호에 대한 중단점을 설정합니다(디버그 버전에만 해당).

  
      long _CrtSetBreakAlloc(   
   long lBreakAlloc   
);  

매개 변수

lBreakAlloc
중단점을 설정할 할당 순서 번호입니다.

중단점이 설정된 이전 개체 할당 순서 번호를 반환합니다.

_CrtSetBreakAlloc은 응용 프로그램에서 메모리 할당의 특정 지점에서 중단한 다음 요청의 원점으로 다시 추적하여 메모리 누수 검색을 수행하도록 허용합니다. 메모리 블록에 할당된 순차적 개체 할당 순서 번호가 힙에서 할당된 경우 이 함수는 이 번호를 사용합니다. 때 _DEBUG 정의 되지 않은에 대 한 호출이 _CrtSetBreakAlloc 전처리 중 제거 됩니다.

개체 할당 순서 번호에 저장 됩니다는 _crtmemblockheader 필드는 _CrtMemBlockHeader Crtdbg.h에 정의 된 구조입니다. 디버그 덤프 함수 중 하나가 메모리 블록에 대한 정보를 보고하면 이 번호는 중괄호로 묶어 표시합니다(예: {36}).

방법에 대 한 자세한 내용은 _CrtSetBreakAlloc 다른 메모리 관리 함수와 함께 사용할 수 있습니다, 참조 힙 할당 요청 추적합니다. 기본 힙의 디버그 버전에서 메모리 블록을 할당, 초기화 및 관리하는 방법에 대한 자세한 내용은 CRT Debug Heap Details를 참조하세요.

루틴필수 헤더
_CrtSetBreakAlloc<crtdbg.h>

호환성에 대한 자세한 내용은 소개 단원의 Compatibility 을 참조하세요.

디버그 버전의 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);  
  
        /*   
         * 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);  
}  

해당 사항 없음. 표준 C 함수를 호출하려면 PInvoke를 사용합니다. 자세한 내용은 플랫폼 호출 예제를 참조하십시오.

디버그 루틴

표시: