The inNative WebAssembly Runtime ran into this problem as well, and includes wasm_malloc.c, which can be linked against your application to provide a simple malloc() implementation without having to write one yourself or depend on WASI.
https://github.com/innative-sdk/innative/wiki/Compile-C---wi...
Of course, it'll be a lot easier to simply depend on WASI instead and re-implement standard libraries on top of it.