我如何添加偏移地址存储在一个原始指针?



我的目标是存储地址并添加偏移量。作为一个例子,我有这样的东西:

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) };

最新更新