gpt4 book ai didi

c - 将 64 位指针存储在 32 位整数中,前提是最大虚拟内存地址 <= UINT32_MAX(例如,当 RAM 大小 <= 4GB 时)

转载 作者:行者123 更新时间:2023-12-02 04:59:41 26 4
gpt4 key购买 nike

<分区>

如果运行时检查确认没有超过 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

我意识到这可能是一个可怕的 hack,并且完全取决于操作系统的内存管理器如何实现虚拟内存(以及编译器?),所以我问这个纯粹是出于好奇。

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com