обратиться к выделенной unsafe памяти?
// здесь p - сырой указатель
let p: *mut i8 = mmap(ptr::null_mut(), 1024, PROT_READ | PROT_WRITE | PROT_EXEC, 0, 0, 0) as *mut i8;
// хочу делать вот так, но ошибка
*p[1] = 0;
// непонимаю, что можно сделать со слайсом?
let slice = slice::from_raw_parts_mut(p as *mut i8, 1);
в расте индексация на поинтерах не пашет, надо в слайс собирать и думать
кажется в последней строчке должно быть let mut slice = ..., чтобы писать туда
Как ни странно, но mut для слайса оказался не нужен. let p: *mut i8 = mmap(addr, size, prot, MAP_PRIVATE | MAP_ANONYMOUS, 0, 0) as *mut i8; println!("errno {}", errno::errno()); // хочу делать вот так //*p[1] = 0; let slice = slice::from_raw_parts_mut(p, 10); работает!
Обсуждают сегодня