我用emscripten編譯C代碼到asm.js 我的C代碼:使用Module.HEAP8.set搞的一團糟數據
int _call_main(char* p, int number)//p is the start arrary, number is the lengh
我想一個字節組數據發送到C代碼,我JS這樣的代碼:
var decode_encode_audio = Module.cwrap('_call_main', 'number', ['array','number']);
........
var byteArray = new Uint8Array(message.data);//audio data
var offset = Module._malloc(70000);
Module.HEAP8.set(byteArray, offset);
decode_encode_audio(offset , byteArray.length);
在C代碼,我打印點p陣列,我得到了弄亂數據,起始部和p的端部是正確的(I保存文件),但是,中間部分被混亂。我用[Module.HEAPU8.set]替換函數(Module.HEAP8.set),也出錯。我不知道爲什麼?
我改變了JS代碼:
var decode_encode_audio = Module.cwrap('_call_main', 'number', ['number','number']);//not array
........
var byteArray = new Uint8Array(message.data);//audio data
//var offset = Module._malloc(70000);
//Module.HEAP8.set(byteArray, offset);
decode_encode_audio(byteArray, byteArray.length);
我得到正確的數據。
任何人都可以告訴我「Module.HEAP8.set」方法有什麼問題。
我們可以通過一個加擾數據的例子來看問題嗎? –