如果运行时检查确认没有超过 4GB 的虚拟内存(或 RAM)可用,是否有任何平台(如果有,是哪个?)可以执行以下操作?
// 1) cast pointer to void pointer
// 2) cast void pointer to uint64 type
// 3) set most significant bytes of uint64 type to 0 (might be wrong choice)
// 4) store as uint32 type
uint32_t trimmed_pointer = (uint64_t) (void *) pointer & 0x00000000ffffffff;
并取回原始指针:
same_as_before_t *pointer = (void *) (uint64_t) trimmed_pointer
我意识到这可能是一个可怕的黑客攻击,并且完全取决于操作系统的内存管理器如何实现虚拟内存(以及编译器?),所以我纯粹出于好奇而问这个问题。