我的目标是存储地址并添加偏移量。作为一个例子,我有这样的东西:
let base_addr = 0x0112A160 as *mut u32;
现在我想存储第二个地址base_addr + offset
我已经尝试了一些事情,但我所尝试的一切都带来了程序崩溃(退出代码:0xc0000005, STATUS_ACCESS_VIOLATION)或其他一些问题
我尝试过的例子:
let new_address: u32 = *base_addr + 0xF8;
let new_address = base_addr + 0xF8 as *mut 32;
谁能给我解释一下这样的事情是如何正确完成的?
使用方法:
let base_addr = 0x0112A160 as *mut u32;
let new_address = unsafe { base_addr.offset(0xF8) };
或者如果你想以字节为单位偏移,可以使用nightly
#![feature(pointer_byte_offsets)] // at top of file
let new_address = unsafe { base_addr.byte_offset(0xF8) };