feat: add reference rust-memalloc
This commit is contained in:
@@ -2,3 +2,26 @@
|
|||||||
Reference:
|
Reference:
|
||||||
* https://radu-matei.com/blog/practical-guide-to-wasm-memory/ [practical-guide-to-wasm-memory.pdf](https://playsecurity.org/doc/showDocDetail.jssp?id=6143)
|
* https://radu-matei.com/blog/practical-guide-to-wasm-memory/ [practical-guide-to-wasm-memory.pdf](https://playsecurity.org/doc/showDocDetail.jssp?id=6143)
|
||||||
* https://github.com/alec-deason/wasm_plugin/blob/main/guest/src/lib.rs
|
* https://github.com/alec-deason/wasm_plugin/blob/main/guest/src/lib.rs
|
||||||
|
* https://github.com/reem/rust-memalloc/blob/master/src/lib.rs
|
||||||
|
|
||||||
|
**rust-memalloc** implements `reallocate`:
|
||||||
|
```rust
|
||||||
|
pub unsafe fn reallocate(ptr: *mut u8, old_size: usize, new_size: usize) -> *mut u8 {
|
||||||
|
if old_size > new_size {
|
||||||
|
let mut buf = Vec::from_raw_parts(ptr, new_size, old_size);
|
||||||
|
buf.shrink_to_fit();
|
||||||
|
|
||||||
|
ptr_from_vec(buf)
|
||||||
|
} else if new_size > old_size {
|
||||||
|
let additional = new_size - old_size;
|
||||||
|
|
||||||
|
let mut buf = Vec::from_raw_parts(ptr, 0, old_size);
|
||||||
|
buf.reserve_exact(additional);
|
||||||
|
|
||||||
|
ptr_from_vec(buf)
|
||||||
|
} else {
|
||||||
|
ptr
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user