用非零值初始化void指针的正确(或最安全)方法?

问题描述 投票:3回答:1

以下作品:

void* p = reinterpret_cast<void*>(0x1000);

但是看起来“不正确/不安全”,例如0x1000是一个int,甚至不是一个uintptr_t,我可以解决这个问题,但是有没有更好/更安全的投射方法?

c++ c++17 void void-pointers
1个回答
0
投票

您可以使用自己的地址对其进行初始化,该地址不能为null:

void* p = &p;

0x1000是int,甚至不是uintptr_t,我可以解决这个问题,但是有没有更好/更安全的投射方法

0x1000int,并且在reinterpret_cast<void*>(0x1000)中,编译器发出一个符号扩展指令(此处的符号为0),以使该值与void*一样宽。

© www.soinside.com 2019 - 2024. All rights reserved.