qsort
luajit でコールバックを試す次の例があります。ただし、(実行時に) メモリ リークが発生しますが、luajit: not enough memory
これは明らかではありません。
適切なコールバックの例を作成する方法について、誰かがヒントを教えてくれますか?
local ffi = require("ffi")
-- ===============================================================================
ffi.cdef[[
void qsort(void *base, size_t nel, size_t width, int (*compar)(const void *, const void *));
]]
function compare(a, b)
return a[0] - b[0]
end
-- ===============================================================================
-- Explicitly convert to a callback via cast
local callback = ffi.cast("int (*)(const char *, const char *)", compare)
local data = "efghabcd"
local size = 8
local loopSize = 1000 * 1000 * 100.
local bytes = ffi.new("char[15]")
-- ===============================================================================
for i=1,loopSize do
ffi.copy(bytes, data, size)
ffi.C.qsort(bytes, size, 1, callback)
end
プラットフォーム: OSX 10.8 luajit: 2.0.1