I think this question is similar to this , and I used most of the answer to my problem, but I still have problems:
First C code:
#include <stdio.h> extern "C" { void fillArray(int* a, int len) { for (int i = 0; i<len; i++) { a[i] = i*i; } for (int j = 0; j < len; ++j) { printf("a[%d] = %d\n", j, a[j]); } } }
I pass a pointer to an array of my C function and populate it with some information. I am compiling this code with
emcc -o writebmp.js dummyCode\cwrapCall.cxx -s EXPORTED_FUNCTIONS="['_fillArray']"
My html / js code is as follows:
<!doctype html> <html> <script src="writebmp.js"></script> <script> fillArray = Module.cwrap('fillArray', null, ['number', 'number']); var nByte = 4 var length = 20; var buffer = Module._malloc(length*nByte); fillArray(buffer, length); for (var i = 0; i < length; i++) { console.log(Module.getValue(buffer+i*nByte)); } </script> </html>
When I run the script, the output I get is correct until the 12th element, after that it's garbage. Is the malloc buffer too small?
source share