Любой STL, включенный в ваш проект MFC, должен быть включен до определения DEBUG_NEW. В прошлом это было проблемой (похоже, больше нет, поскольку я не могу воспроизвести ее в VS 2010).
// myfile.cpp
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
// This will cause the error
#include <vector>
Принимая во внимание
// myfile.cpp
// will work OK
#include <vector>
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
DEBUG_NEW
- это расширение для Microsoft, которое помогает обнаруживать утечки памяти в отладочных версиях приложения. Это может быть очень полезно в некоторых случаях.
Он определен в afx.h как:
void* AFX_CDECL operator new(size_t nSize, LPCSTR lpszFileName, int nLine);
#define DEBUG_NEW new(THIS_FILE, __LINE__)`
Это помогает обеспечить отслеживание выделенной памяти, а при обнаружении утечки даст вам файл и номер строки, где произошло выделение.