메모리가 주륵주륵

프로그래밍 2007. 12. 15. 10:49
MFC에서 부득이한 경우로, vector 나 기타 메모리 관리 클래스를 거치지 않은 채로 동적할당을 이용해서 객체를 사용하던 중 문제가 발생했다. 동적할당한 객체를 가리키건 포인터를 delete 하거나, 동적할당을 반복하던 중에 포인터가 붕 떠버리는 (dangle) 현상이 일어난 것.

거기다 이 객체들이 다른 힙까지 침범을 하는 건지... 이상한 부분에서 오류가 발생하기도 하고, 포인터가 엉뚱한 곳을 가리키기도 하고, 그래서 delete 가 말을 듣지 않는 등 일대 패닉이 일어났다. (heap overrun)

내가 싸질러 놓은 객체의 생명주기 하나도 관리하지 못하는 걸까 하고 좌절했지만 결국 객체의 멤버 초기화 함수 Clear() 를 정의하여 delete 직전에 호출해주기로 했다.

하지만 여전히, 안된다.

동적 할당 부분을 추가한 걸로 봐선 아무래도 힙 문제일 가능성이 높다. OTL

: