gpt4 book ai didi

c++ - reinterpret_cast 不会改变指针的值是真的吗?

转载 作者:太空狗 更新时间:2023-10-29 21:35:35 25 4
gpt4 key购买 nike

reinterpret_cast 是否真的不会改变它转换的指针的值,即使新指针是非法指针也是如此:

char * charbuffer = ....//charbuffer is a buffer we allocated.

int * Ptr=reinterpret_cast< int *>(charbuffer+17);//Ptr should be illegal due to mis-aligment

我假设即使 charbuffer+17 指向的地址(这是 char * 指针类型)由于错误而存储 int 类型的值是非法的 -对齐,reinterpret_cast得到的ptr还是指向和charbuffer+17一样的内存地址?

注意,我们不关心它指向的内容,我们只想确保这个指针所代表的内存地址与charbuffer+17相同。

这样的 promise 对于我们审查的一些代码的正确性和可移植性非常重要。

最佳答案

根据C++标准,它是不安全的:

5.2.10 Reinterpret cast
[...]
3 [ Note: The mapping performed by reinterpret_cast might, or might not, produce a representation different from the original value. — end note ]

但实际上我不希望 reinterpret_cast 返回另一个值。

关于c++ - reinterpret_cast 不会改变指针的值是真的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41957525/

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