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

Я экспериментировал с размещением новых классов «map» поверх пространства ввода-вывода, чтобы сэкономить память:

hardware::ioport *port = new(0xWHATEVER) hardware::ioport();

который работает хорошо, но обнуляет байты в 0xWHATEVER. «Альтернативное» решение

hardware::ioport *port = reinterpret_cast<hardware::ioport *>(0xWHATEVER);

работает также, но не вызывает конструктор по умолчанию, который я реализовал.

Есть ли способ вызвать конструктор, но не обнулять память заранее в C ++?

0

Решение

  hardware::ioport *port = new(0xWHATEVER) hardware::ioport();

Скобки () после ioport () вызывают автоматическую инициализацию нуля для элементов pod класса ioport. Очевидно, вам не нравится эта функция, просто удалите их. Fix:

  hardware::ioport *port = new(0xWHATEVER) hardware::ioport;
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]