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

标签 emscripten

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

我对 C 的经验不是很丰富(我的项目的其余部分是用 C++ 编写的),但我知道你通常必须手动释放 C 中的动态字符串。将字符串从 javascript 传递到 C 函数时是否会出现这种情况,如果是这样,应该如何做?

最佳答案

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

对于变量字符串,我建议您使用 std::string (就像您通常所做的那样),并且当您将其传递给 emscripten 函数时,只需调用其上的 c_str() 方法即可将其转换。

例如:

    my_js_function(my_string.c_str());

关于emscripten - 您是否必须释放传递给 Emscripten 中导出的 C 函数的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24435345/

相关文章:

javascript - 在 Rails 上加载 WebAssembly 二进制文件

javascript - 提升局部变量屏蔽全局变量?

javascript - 如何检查 Firefox 是否使用 asm.js 代码?

javascript - 使用 emscripten 生成 python.cc.js

javascript - 确定 Web 程序集代码的运行时间

c++ - 如何使用 emscripten 构建 cocos2dx

c++ - Emscripten编译qt应用不显示图像

c++ - 如何验证 C++ 编译器是否将函数扩展为内联?

javascript - 性能 : NaCl vs Emscripten

c++ - 如何通过 emscripten C++ 和最新的 firefox nightly 启用和使用 glsl #version 300 es 着色器?