Может ли указатель Rust на память, выделенную кучей, иметь значение 0 при компиляции в Wasm?

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

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

Простой пример:

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

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

1 ответ

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

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

Другие вопросы по тегам