在我的C代码中,我有一个函数,该函数会在调用该函数之前生成一个大小未知的数组,例如,该数组将包含红色> 128的所有像素。
C程序很简单,没有问题。我使用malloc和realloc。
现在,在javascript中,在调用之后,我想在Uint8ClampedArray中获取结果(数组)。
在我阅读的所有教程中,从C端返回的数组具有给定的长度,例如L字节。 因此,我们使用:
pointer = Module._malloc(L)
Module.HEAPU8.set(my_Uint8ClampedArray, pointerResult);
但是,在我的代码中,直到C函数结束时才知道结果数组的长度:
int imageGrayscale(unsigned char *data) {
int l = some_function(...)
data = malloc( l * sizeof(unsigned char));
for (int i = 0; i < l ; i++) {
data[i]= //some_value//; }
return l;
// return the size of *data in case of...
// but the value that matter is *data.
}
这是我不管理的Javascript代码* data:
var wa_imageGrayscale =module.cwrap('imageGrayscale',['number'],['number']);
var arrayOut = Module._malloc(// how_get_the_size_before_calling //);
var size_of_arrayOut = wa_imageGrayscale(arrayOut);
var = new Uint8ClampedArray(size_of_arrayOut);
...???
}
谢谢!