我真的想了解这两行代码在发生什么
const int PAGES = 8 * 1024;
// PAGES + extra 4KiB for alignment
uint8_t * mem = new uint8_t [ PAGES * CCPU::PAGE_SIZE + CCPU::PAGE_SIZE ];
// align to a mutiple of 4KiB
uint8_t * memAligned = (uint8_t *) (( ((uintptr_t) mem) + CCPU::PAGE_SIZE - 1) & ~(uintptr_t) ~CCPU::ADDR_MASK );
尤其是最后一行,我对任何东西都不理解...
mmap
映射匿名内存,在后者上使用VirtualAlloc
)。虽然不是不可能,但如果你经常这样做,这样做可能是值得的,但我可以理解为什么有人会尝试编写纯C++标准版本的对齐分配器。 - ShadowRanger