gpt4 book ai didi

C++如何获取存储在空指针中的地址?

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:04:41 28 4
gpt4 key购买 nike

如何获取指针指向的值的内存地址?在我的例子中,它是一个空指针。只是将它分配给一个 uint 给我这个错误:

Error   1   error C2440: 'return' : cannot convert from 'void *' to 'UInt32'

谢谢!

最佳答案

std::size_t address = reinterpret_cast<std::size_t>(voidptr);
// sizeof(size_t) must be greater or equal to sizeof(void*)
// for the above line to work correctly.

@Paul Hsieh
我认为在这个特定问题中将 void* 转换为 size_t 就足够了,原因有以下三个:

  • 提问者没有具体说明他是否是否想要可移植解决方案。他说,这对他有用。我不知道到底是什么那意味着但是我很清楚他是在 Windows 或其他平台上处理 IA-32系统处于保护模式。那意味着将指针转换为整数是定义的操作该系统,即使它不是由标准 C++ 定义的。

  • 其次,我建议首先将指针转换为 int,这显然没有意义,正如 litbjalf 向我展示的那样。我纠正了我所做的错误,并将 int 替换为 size_t

  • 最后,我努力寻找与您在标准中提出的解决方案相关的内容。不幸的是,我找不到任何相关的东西。我有这个引用:ANSI ISO IEC 14882 2003。我认为 sellibitze 指出它成为 future 标准的一部分。我真的不知道 C,显然 C99 引入了这个完美的解决方案。我希望有人向我展示一个可移植的 C++ 解决方案。

请不要犹豫,纠正我的错误,我仍然是大学的学生:)

谢谢,

关于C++如何获取存储在空指针中的地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1593580/

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