繁体   English   中英

如何将 uint32_t 或 uint64_t 存储在 void 指针中

[英]How can I store a uint32_t or uint64_t in a void pointer

我有一个 uint32_t(将来可能会变成 uint64_t)变量。 我使用的其中一个库中有一个 function,它允许向它传递一个空指针。 如何将 uint32_t 传递给此 void 指针:

uint32_t myEntity = 1242242;
// not a pointer; so, error about invalid conversion
actor->userData = static_cast<void *>(myEntity);

我不能使用指向此原始类型的指针,因为该值可能来自参数或类似参数,并且由于它是一个 uint,所以我不想为它使用引用。

有什么方法可以将这个值设置为空指针吗? 这样,我就可以以相同的方式检索它,而无需在堆中创建值以使其正常工作。 否则,我将需要管理对象的销毁,以免造成 memory 泄漏。

对于您正在尝试的内容,您需要使用reinterpret_cast而不是static_cast ,例如:

uint32_t myEntity = 1242242;
actor->userData = reinterpret_cast<void*>(myEntity);
uint32_t myEntity = reinterpret_cast<uint32_t>(actor->userData);

由于您提到该值将来可能会更改为uint64_t ,请注意在这种情况下您必须将代码编译为 64 位可执行文件(如果您还没有),否则void*不会很大超过最高uint32_t值的足够值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM