Pointers as returned from _malloc are relative to the beginning of the module's linear memory (ie, with the start at 0 for code inside Wasm or JS viewing through a typed array).
If the WebAssembly runtime needs to move the underlying buffer in the process address space (which can happen on a 32-bit system if not enough address space was initially reserved), this will be entirely transparent to WASM and JavaScript code in terms of pointers; the new buffer will contain the same data at the same locations, but be larger.
My understanding is that if you are passing around Typed Array views into the linear memory on the JS side, that those might become stale? Though I'm not 100% sure if that's current since Wasm came in and added its own method of underlying buffer growth. :D
-- brion