我有一个代码,在内存中传递了某个位置。内存中的这个地方指向一个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
问候,
您有两个问题:
首先,指针ps2是一个空指针,它没有指向任何地方。这意味着您不能取消引用它。
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。在某些系统上,未对齐的访问是无效的,并且会导致硬件异常。