0

我一直在尝试将新的“映射”类放置在 I/O 空间之上以节省一些内存:

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

效果很好,但会将 0xWHATEVER 处的字节清零。“替代”解决方案

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

也可以,但不调用我实现的默认构造函数。

有什么方法可以调用构造函数,但不要在 C++ 中预先将内存清零?

4

1 回答 1

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

ioport() 之后的 () 括号对 ioport 类的 pod 成员调用自动零初始化。显然您不喜欢此功能,只需将其删除即可。使固定:

  hardware::ioport *port = new(0xWHATEVER) hardware::ioport;
于 2013-12-07T15:06:01.663 回答