본문 바로가기
IT-개발,DB

[개발/MFC] error C2665: 'operator new' : 5개의 오버로드 중 ...

by SB리치퍼슨 2012. 2. 22.
[개발/MFC] error C2665: 'operator new' : 5개의 오버로드 중 ...

Visual Studio VC++ 작업중 (MFC)

디버깅 모드로 컴파일 중에 아래와 같은 에러 메시지가 나오는 경우가 발생할 수 있다.
그런데 에러의 위치를 찾을 수가 없다. 아래 메시지를 더블 클릭하면 xmemory.h 파일로 이동을 한다.

error C2665: 'operator new' : 5개의 오버로드 중 모든 인수 형식을 변환할 수 있는 오버로드가 없습니다.


이 에러에 대해서 대처할 수 있는 방법은
아래와 같다.

MFC와 STL 사이에 문제로 생각된다.

MFC에서 클래스를 만들면
파일 위쪽에 아래와 같은 코드가 자동으로 만들어 진다.

#ifdef _DEBUG
#define new DEBUG_NEW
#endif

이 코드에서 발생하는 문제였다.
디버그 모드에서는 new DEBUG_NEW 에서 문제가 되는 것 같다.

해결 방법은 위의 디버그 관련 코드보다 먼저 STL관련 인클루드(#include ...)를 시켜주면 된다.
예를 들자면

#include <vector>
#include <mysystem.h>

#ifdef _DEBUG
#define new DEBUG_NEW
#endif


반응형

댓글