gpt4 book ai didi

c++ - 在 C++ 中从十六进制转换为 unsigned int*

转载 作者:太空宇宙 更新时间:2023-11-03 10:24:56 34 4
gpt4 key购买 nike

我有一个作业应该评估 C/C++ 中的一些指针操作表达式和内存泄漏情况。有一个我坚持:

unsigned int* pInt = (unsigned int*) 0x403004;

一开始这对我来说很可疑,但在任务中这条线在理论上是有效的,但是运行程序我在这一行遇到了段错误。

问题是:这是对的还是可能的,或者教授只是在愚弄我们,告诉我们这是对的?我见过一些关于字符串“hex”到 int 的例子和问题,但没有看到关于“pure hex”到 int 或 int*

最佳答案

unsigned int* pInt = (unsigned int*) 0x403004;

这里有两点值得怀疑:

  • 除非您正在编写一些专门的软件,例如设备驱动程序或操作系统,或者您在某些内存固定的嵌入式或特殊系统中,否则看到硬编码的内存地址肯定是可疑的。如果您的程序试图访问它没有访问权限的内存,您的程序将(最多)失败。

  • 在右侧,编译器首先推导出 0x403004 中的值,如 int 中的值,并将其正确转换为指针。因此,您的段错误可能是第一点的结果。

关于c++ - 在 C++ 中从十六进制转换为 unsigned int*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39926915/

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