首页 > 解决方案 > 从已知地址访问数组

问题描述

我有一个代码,我通过了内存中的某个位置。内存中的这个地方指向一个array

uint32_t *ps2 = NULL;
uint32_t src_address = 0x1ffffc3;

如何array从该地址读取 的值?我尝试将其转换如下

*ps2 = (void *)src_address;

但它给了我一个错误:invalid conversion from ‘void*’ to ‘uint32_t

问候,

标签: carrays

解决方案


你有两个问题:

  1. 首先,指针ps2是一个空指针,它不指向任何地方。这意味着你不能取消引用它。

  2. src_address不是指针,当它真的应该是。

总而言之,您对指针及其使用方式的理解似乎有些混淆。

为了让它工作,首先定义ps2为非指针:

uint32_t ps2;

然后定义src_address 指针:

uint32_t *src_address = (uint32_t *) 0x1ffffc3;

最后src_address像普通指针一样取消引用:

ps2 = *src_address;

可能存在第三个问题: 的地址src_addressuint32_t. 在某些系统上,未对齐的访问是无效的,并且会导致硬件异常。


推荐阅读