Размещение нового, объекты размещены над регистрами ввода / вывода и обнуленной памятью
Я экспериментировал с размещением новых классов "map" поверх пространства ввода-вывода, чтобы сэкономить память:
hardware::ioport *port = new(0xWHATEVER) hardware::ioport();
который работает хорошо, но обнуляет байты в 0xWHATEVER. "Альтернативное" решение
hardware::ioport *port = reinterpret_cast<hardware::ioport *>(0xWHATEVER);
работает также, но не вызывает конструктор по умолчанию, который я реализовал.
Есть ли способ вызвать конструктор, но не обнулять память заранее в C++?
1 ответ
Решение
hardware::ioport *port = new(0xWHATEVER) hardware::ioport();
Скобки () после ioport() вызывают автоматическую инициализацию нуля для элементов pod класса ioport. Очевидно, вам не нравится эта функция, просто удалите их. Fix:
hardware::ioport *port = new(0xWHATEVER) hardware::ioport;