我有一个代码,我通过了记忆中的某个地方。内存中的这个位置指向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
对齐。在某些系统上,未对齐的访问无效,将导致硬件异常。