void* operator new( size_t nSize );
throw( CMemoryException );
void* operator new( size_t nSize, LPCSTR lpszFileName, int nLine );
throw( CMemoryException );
Замечания
Для выпускаемой версии библиотеки, оператор new выполняет оптимальное распределение памяти способом подобным malloc. В отладочной версии, оператор new участвует в контролируемой схеме распределения, разработанной, чтобы обнаружить утечки памяти. Если Вы используете строку текста программы
#define new DEBUG_NEW
Перед любой из ваших реализаций в .CPP файле, затем в следующей версии, new будет использоваться, сохраняя имя файла и номер строки в распределенном блоке для последующего отчета. Вы не должны волноваться относительно обеспечения параметров дополнительного пространства, макрокоманда заботится о этом для Вас.
Даже если Вы не используете DEBUG_NEW в режиме oтладки, Вы все еще получаете обнаружение утечки, но без номера строки исходного файла. Если Вы перегружаете этот оператор, Вы должны также перегрузить delete. Не используйте функцию стандартной библиотеки _new_handler.
Пример
// См. CObList::CObList для просмотра класса CAge,
// используемого в CObject примерах.
void* CAge::operator new(size_t nSize)
{
return malloc(nSize);
}
void* CAge::operator new(size_t nSize, LPCSTR lpszFileName, int nLine)
{
return malloc(nSize);
}