我一直在尝试在I / O空间顶部放置新的“映射”类,以节省一些内存:
hardware::ioport *port = new(0xWHATEVER) hardware::ioport();
效果很好,但将0xWHATEVER处的字节清零。 “替代”解决方案
hardware::ioport *port = reinterpret_cast<hardware::ioport *>(0xWHATEVER);
工作正常,但不调用我实现的默认构造函数。
有什么方法可以调用构造函数,但不要在C ++中预先将内存清零?
最佳答案
hardware::ioport *port = new(0xWHATEVER) hardware::ioport();
ioport()在ioport类的pod成员上调用自动零初始化后的()括号。显然,您不喜欢此功能,只需删除它们即可。固定:
hardware::ioport *port = new(0xWHATEVER) hardware::ioport;
关于c++ - 放置新对象,放置在I/O寄存器和归零存储器上,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20442642/