我认为这个问题类似于这个问题,我已经使用其中的大部分答案解决了我的问题,但我仍然有一些问题:
首先是C代码:
#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]);
}
}
}
我将一个数组的指针传递给我的C函数,并用一些信息填充它。我使用以下代码编译:
emcc -o writebmp.js dummyCode\cwrapCall.cxx -s EXPORTED_FUNCTIONS="['_fillArray']"
我的html/js代码如下:
<!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>
当我运行脚本时,输出结果在前12个元素正确无误,之后的输出结果变得混乱。是我malloc的缓冲区太小了吗?
getValue
。 - canbax