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