c - 从已知地址访问数组
问题描述
我有一个代码,我通过了内存中的某个位置。内存中的这个地方指向一个array
uint32_t *ps2 = NULL;
uint32_t src_address = 0x1ffffc3;
如何array
从该地址读取 的值?我尝试将其转换如下
*ps2 = (void *)src_address;
但它给了我一个错误:invalid conversion from ‘void*’ to ‘uint32_t
问候,
解决方案
你有两个问题:
首先,指针
ps2
是一个空指针,它不指向任何地方。这意味着你不能取消引用它。src_address
不是指针,当它真的应该是。
总而言之,您对指针及其使用方式的理解似乎有些混淆。
为了让它工作,首先定义ps2
为非指针:
uint32_t ps2;
然后定义src_address
为指针:
uint32_t *src_address = (uint32_t *) 0x1ffffc3;
最后src_address
像普通指针一样取消引用:
ps2 = *src_address;
可能存在第三个问题: 的地址src_address
与uint32_t
. 在某些系统上,未对齐的访问是无效的,并且会导致硬件异常。
推荐阅读
- javascript - 会话存储一直在激活
- php - 调整大小并保存图像
- python - 从不同版本的 tf.keras 加载保存的模型
- firebase - 将 FireBase Analytics 导入 Unity 时出现问题
- python - selenium 和 google chrome 驱动程序不会在 linux python 上运行
- python - 即使在 apache 服务器重新启动后,如何保持 tweepy 流从 Django 运行?
- java - frida 调用了错误的构造函数
- c# - Linq - 连接两个表并计数
- python - ImportError:无法在 Python 集成测试中导入测试模块
- python - 获取距所选站点最近的网格单元的降水时间序列(全部循环)