Функция распределения по умолчанию для обработчиков.
void * asio_handler_allocate(
std::size_t size,
... );
Асинхронные операции могут потребовать выделения временных объектов. Поскольку асинхронные операции имеют объект функции обработчика, эти временные объекты могут быть связаны с обработчиком.
Внедрите asio_handler_allocate и asio_handler_deallocate для ваших собственных обработчиков, чтобы обеспечить индивидуальное распределение этих временных объектов.
По умолчанию реализация этих крючков распределения использует<operator
new
>и<operator
delete
>.
Все временные объекты, связанные с обработчиком, будут размещены до того, как вызов обработчику будет выполнен. Это позволяет повторно использовать ту же память для последующей асинхронной операции, инициированной обработчиком.
class my_handler;
void* asio_handler_allocate(std::size_t size, my_handler* context)
{
return ::operator new(size);
}
void asio_handler_deallocate(void* pointer, std::size_t size,
my_handler* context)
{
::operator delete(pointer);
}
Заголовок:<boost/asio/handler_alloc_hook.hpp
>
Заголовок удобства:<boost/asio.hpp
>