우연히 재밌는 동작을 발견해서 기록합니다. 위 사진속 코드를 보면 main함수에서 TestFunc함수를 호출하고 있습니다. 그렇다면 당연히 TestFunc함수가 call 됐을거라 예상하겠지만 현재 코드에서는 TestFunc함수를 한번만 사용해서 그런지 Inline으로 처리 된걸 확인 할 수 있습니다. (아래 사진 참고) 따라서 이건 함수가 실제 호출된 것이 아니라, 컴파일러가 함수 내용을 인라인(Inline) 처리했기 때문에 스택 프레임이 존재하지 않습니다. 추가.함수 인라인이란??컴파일러 최저기화 중 하나로, 작은 함수는 실제 호출(call)을 하지 않고, 호출 지점에 함수 본문 코드를 "복사 붙여넣기"하듯 삽입합니다.그래서 컴파일 후에는 TestFunc함수 호출이 사라지고, main함수 아네 코드가..
코드 #include #include #include int *solution(int n, long long left, long long right) { // 2차원 배열 동적 할당 int **grid = (int **)malloc(n * sizeof(int *)); for (int i = 0; i i) num++; grid[i][j] = num; } } // res /*for (int i = 0; i < n; ++..
#include #include void main() { int n = 0; __try { int s = 10 / n; } __except (1) { printf("exception : 0x%x(%d)\n", GetExceptionCode(), GetExceptionCode()); } printf("main continue\n"); } EXCEPTION_ACCESS_VIOLATION (0xC0000005) 메모리 참조 오류를 구분하기 위해서 정의해 놓은 정수값EXCEPTION_INT_DIVIDE_BY_ZERO (0xC0000094) 정수를 0으로 나누는 예외를 너타내기 위해 정의해 놓은 정수값EXCEPTION_BREAKPOINT (0x80000003) 중단점 발생하면! 위 함수보다 더욱 자세하게 예외에 ..