Значение по умолчанию operator new
действительно реализовано в среде выполнения DriverKit. Я успешно использовал его для выделения и инициализации самих объектов …_IVars
. (тип PIMPL, который автоматически объявляется заранее заголовком, сгенерированным iig
для любых классов, определенных в .iig
файлах)
Итак, я действительно делаю это в MyDriver::init()
:
this->ivars = new MyDriver_IVars();
, а затем в MyDriver::free()
:
if (this->ivars != nullptr)
{
// … some extra cleanup …
delete this->ivars;
this->ivars = nullptr;
}
На мой взгляд, это наиболее чистый подход, достижимый с учетом ограничений, наложенных на нас системой iig
.
Я решительно Подозреваемый operator new
реализован с той же серверной частью, что и в обычном пользовательском пространстве macOS, хотя я на самом деле еще не проверял, так как до сих пор не сталкивался с какими-либо проблемами с ним. Очевидно, соответствующий delete
тоже работает.
OSTypeAlloc
предназначен для типов, производных от OSObject
, и определенно должен использоваться для них, но не будет работать для других типов.