Размещение нового, объекты размещены над регистрами ввода / вывода и обнуленной памятью

Я экспериментировал с размещением новых классов "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;
Другие вопросы по тегам