Шаг 628 - CObject::operator new

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);
}

Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 26.01.2002