您是否必须释放传递给Emscripten中导出的C函数的字符串?

时间:2014-06-26 16:05:59

标签: emscripten

我通过Emscripten wiki(Interacting with code)发现从javascript调用的C函数ccallcwrap应该有char*作为参数或返回类型或者返回一个字符串。

我在C方面不是很有经验(我的项目的其余部分是用C ++编写的)但是我知道你通常必须在C中手动释放动态字符串。这是将字符串从javascript传递给C函数的情况,如果是这样,应该怎么做?

1 个答案:

答案 0 :(得分:1)

在大多数情况下,您可以获取C ++代码来处理内存分配并为您释放空间。例如,如果传入一个文字字符串(在引号中),它将在函数返回后被释放。

对于变量字符串,我建议您使用std :: string(正如您通常所做的那样),当您将其传递给emscripten函数时,只需调用它上面的c_str()方法进行转换。

例如:

    my_js_function(my_string.c_str());