【问题标题】:luaJit how to free char* data returned from c functionluaJit如何释放从c函数返回的char *数据
【发布时间】:2017-03-20 11:15:55
【问题描述】:

这是我要调用的 C 函数:

char* decrypt(const char* str, int len) {
    char* endata = malloc(len/2);
    //assign
    return endata;
}

这里是lua内容:

local ffi = require "ffi"
local rsa = ffi.load("test.so")

ffi.cdef[[
char* decrypt(const char* str, int len);
]]

local str = "256b5740ed16e5b15146816f77b0ab74de43d58ab367e9ac850642514f5cc4880e899a6a7775aa"
local c_str = test.decrypt(str, 256)
local lua_str = ffi.string(c_str, 128)

luajit 会自动释放 c_str 吗?

【问题讨论】:

    标签: garbage-collection ffi luajit


    【解决方案1】:

    luajit 会自动释放 c_str 吗?

    不,它不会。 LuaJIT 不知道这个指针是什么。

    【讨论】:

    • 谢谢,我应该用ffi.gc注册finalizer,然后LuaJIT会自动调用finalizer,比如ffi.gc(c_str, ffi.c.free)
    猜你喜欢
    • 2014-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-25
    • 2012-08-07
    • 1970-01-01
    • 2020-02-21
    • 2011-08-05
    相关资源
    最近更新 更多