从已知地址访问数组

asd*_*asd 7 c arrays

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

uint32_t *ps2 = NULL;
uint32_t src_address = 0x1ffffc3;
Run Code Online (Sandbox Code Playgroud)

如何array从该地址读取的值?我试图如下

*ps2 = (void *)src_address;
Run Code Online (Sandbox Code Playgroud)

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

问候,

Som*_*ude 8

您有两个问题:

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

  2. src_address 不是指针,实际上应该是指针。

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

为了使其正常工作,首先将其定义ps2不是指针:

uint32_t ps2;
Run Code Online (Sandbox Code Playgroud)

然后定义src_address 一个指针:

uint32_t *src_address = (uint32_t *) 0x1ffffc3;
Run Code Online (Sandbox Code Playgroud)

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

ps2 = *src_address;
Run Code Online (Sandbox Code Playgroud)

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