DAMAGE: after Normal block (#XXX) at 0xXXXXXXXX

위와 같은 "Microsoft Visual C++ Debug Library" Error가 발생할 때가 있다.
이때 XXX 부분들(파랑)은 각기 다르게 나타날수가 있다.
이는 대부분이 잘못된 메모리 영역의 참조에 의해 발생한다.
아래의 예를 보자.


영역 참조의 잘못된 예 (Language : c)
  1. int *a;
  2. int b=20 , i;
  3. a = new int[b];
  4. for(i=0;i<b+1;i++) // 사실 이부분이 잘못 됬는데
  5. {
  6.     a[i] = i;
  7. }
  8. delete [] a; // 엉뚱한 이곳에서 오류가 나타남 이걸 지우면 오류 안뜸


b+1이부분은 고의적으로 만들었지만 실수로 이럴수 있기 때문에..
원인은 할당 영역을 벗어난 곳에 손을 대면 이런거라는걸 알 수 있다.

즉 a배열은 20까지밖에 없는데 21번 index까지 작업하기 때문에 오류가 있다.
이때 delete를 하게 되면 위와 같은 오류가 발생이 가능하다.

해제하려는 메모리가 정확하게 잘 참조하였는지 확인하자.

본 자료는 다음을 참고하였다.

참고 : http://blog.naver.com/yjh1990/130000599620

최근에 HyperSnap 이라는 Capturing Program을 사용하게 되었습니다.
간단한 방법으로 화면을 Capture할수 있어서 매우 좋은데요.
이 프로그램 때문에 Visual Studio 에서 Debugging 시에 F11키가 먹통이 되는 경우가 있습니다.
이 때문에 컴터를 한 5번 포멧했는데요. 원인을 찾았습니다.



원인은 HyperSnap Program이 HotKey를 사용하는 것에 문제가 있었습니다.
즉, HyperSnap Program이 상시 실행되고 있는 상태이기 때문에 HotKey로 등록된 F11키의 입력을 Hooking하여 모두 가져가 버리는 것입니다.
때문에, Visual Studio에서 아무리 F11키를 눌러도 모두 키입력은 Visual Studio로 가지 않고 HyperSnap Program으로 전송되어 집니다. (엄밀히 말하면, 선처리하여 Key입력이 VS까지 가지 않는거죠)


해결방법은 HyperSnap Program에서 HotKey의 사용을 해제하거나, F11로 되어있는 HotKey를 다른 키로 바꾸는 것입니다.
혹은, 아예 HyperSnap Program을 상시 수행하지 않게 하여, 필요할 때 실행시키는 것도 하나의 방법이 될 수 있습니다.



저와 같은 문제로 고생하시지 말기 바라며 @^-^@ 꾸벅~
fatal error C1010 : unexpected end of file while looking for precompiled header directive


Visual Studio를 사용하면서 위와 같은 Error을 자주 접하게 된다.


이는 Visual C++ 컴파일러는 미리 컴파일된 해더(Precompiled Header)를 지원하고, 프로젝트 설정을 통해 대상 헤더를 지정할 수 있기 때문이다.


특히 MFC는 수정하지 않고 사용하는 헤더 수가 많기 때문에, 이 방식을 사용하면 매번 전체를 컴파일하지 않아 개발 속도가 빨라진다.





그런데 새로운 소스 파일을 추가하다 보면 다음과 같은 오류 메시지를 볼 수 있다.


fatal error C1010 : unexpected end of file while looking for precompiled header directive


이 오류 메시지는 미리 컴파일된 해더와 관련이 있으므로, 프로즈게트 설정에서 미리 컴파일된 헤더를 사용하지 않겠다고 설정하면 없앨 수 있다.


하지만 앞서 언급한 효율을 포기하는 것이므로 바람직하지는 않다.



project -> project Setting -> 좌측에서 원하는 .cpp 화일 선택 -> C/C++ 탭 선택 ->Category에서 precompiled Header 선택 -> Not using percompiled headers 선택



위와 같이 하게 되면 해당.cpp는 Precomplie 하지 않게 된다.


아니면, general 탭 에서 exclude file from build 를 체크해주면


빌드시에 아예 제외하게 된다.

+ Recent posts