uintptr is not tracked by the GC, while any pointer type (including unsafe.Pointer) is tracked. Make sure to only cast pointers to uintptr when absolutely necessary. This fixes a bug found in #3162.
* wasm,wasi: make sure buffers returned by malloc are not freed until free is called