Yes, each malloc() call must be matched with a call to free(). If you
create a typed array view to the memory area you allocated with malloc(),
you should not reference that view after you free() the underlying memory,
or you will be writing to a memory area you have already freed.

Typed array views that you have allocated with a 'new Uint8Array' or
similar do not need to be deleted, since they are subject to JS VM garbage
collection.


2014-08-25 13:53 GMT+03:00 awt <[email protected]>:

> Hi,
>
> I have allocated memory for a Uint8Array in JS using the following code:
>
>
> var nDataBytes = array.length * array.BYTES_PER_ELEMENT;
> var dataPtr = Module._malloc(nDataBytes);
>
> // Copy data to Emscripten heap (directly accessed from Module.HEAPU8)
> var dataHeap = new Uint8Array(Module.HEAPU8.buffer, dataPtr, nDataBytes);
> dataHeap.set(new Uint8Array(array.buffer));
>
> return dataHeap.byteOffset;
>
> I then return the pointer to the memory thru dataHeap.byteOffset to my
> C++ code. Do I have to free the memory in dataPtr and dataHeap.byteOffset in
> my C++ code explicitly using the free and delete calls respectively?
>
> --
> You received this message because you are subscribed to the Google Groups
> "emscripten-discuss" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"emscripten-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to