Я столкнулся с проблемой при переносе нашего кода C ++ с VS2008 на VS2010. Пока я не могу найти объяснение причины этого и буду признателен за вашу помощь.
У нас есть специальный распределитель памяти, и он находится в DLL. В остальной части кода мы используем препроцессор для перенаправления распределений нашим функциям. Следующий простой код правильно компилируется в VS2008, но не в VS2010.
в stdafh.h:
#define free my_free
#include <string>
В VS2010 я получаю:
1>d:\program files\microsoft visual studio 10.0\vc\include\xdebug(62): error C3861: 'free': identifier not found
Исходя из строки:
template<class _Ty>
void __CLRCALL_OR_CDECL _DebugHeapDelete(_Ty *_Ptr)
{ // delete from the debug CRT heap even if operator delete exists
if (_Ptr != 0)
{ // worth deleting
_Ptr->~_Ty();
// delete as _NORMAL_BLOCK, not _CRT_BLOCK, since we might have
// facets allocated by normal new.
free(_Ptr);
Любая помощь или идеи будут высоко оценены!
Моше