Может ли указатель Rust на память, выделенную в куче, быть 0 при компиляции в Wasm? - PullRequest
1 голос
/ 27 мая 2020

При выделении памяти из кучи в коде Rust, скомпилированном для Wasm, выделяется память в линейной памяти Wasm.

Правильно ли я понимаю, что значение указателя является смещением в этой памяти? Если да, возможно ли и действительно ли получить значение 0 в качестве смещения / указателя?

Простым примером может быть:

let data: Vec<u8> = Vec::with_capacity(123);
let data_ptr = data.as_ptr() as usize;

Могу ли я предположить, что data_ptr не- ноль или это действительный адрес?

1 Ответ

1 голос
/ 27 мая 2020

Да, это может быть ноль.

См. Передача строки JavaScript в функцию Rust, скомпилированную в WebAssembly , в качестве примера, где он был равен нулю, и во избежание противоречит традиционному значению NULL.

...