gpt4 book ai didi

c - uintptr_t 太小,无法存储地址

转载 作者:行者123 更新时间:2023-11-30 20:54:50 28 4
gpt4 key购买 nike

在 C 中,当我将指针转换为 uintptr_t 类型时,它会截断部分地址。是否有办法将整个地址存储为整数或不大于 8 字节的其他数据类型?

最佳答案

我不确定你在那里面对的是什么,因为uintpt_t通常应该足够大以容纳任何指针;如果该类型存在,它必须足够大以容纳 void * 以及指向任何对象的任何指针(C11 草案 n1570 7.20.1.4):

The following type designates an unsigned integer type with the property that any valid pointer to void can be converted to this type, then converted back to pointer to void, and the result will compare equal to the original pointer:

uintptr_t

[this type is optional]

值得注意的是,不能保证函数指针可以转换为uintptr_t并可移植地转换回来,尽管在 POSIX 上就是这种情况。

<小时/>

此外,C 标准不保证存在任何整数类型,其大小足以包含实现上的指针;但是,如果 uintptr_t 类型存在,则情况就不会如此(uintptr_t 类型是足够大的类型)。

关于c - uintptr_t 太小,无法存储地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37223194/

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