المشكلة مع luabind::كائن dereferencing (المبسطة)
-
20-09-2019 - |
سؤال
باستخدام C++, lua5.1, luabind 0.7
لوا كود:
-- allocates near 8Mb of memory
function fff()
local t = {}
for i = 1, 300000 do
table.insert(t, i)
end
return t
end
C++ code:
{
luaL_dostring(lua_state, "return fff()");
luabind::object obj(luabind::from_stack(ls, -1));
}
lua_gc(l_, LUA_GCCOLLECT, 0); // collect garbage
نتيجة:لوا لا تزال لديها 8Mb الذاكرة المخصصة.جمع القمامة يتجاهل هذا الجدول الكائن.وقد المراجع في أي مكان ؟ ولكن أين ؟ هذا الجدول إلغاء تخصيص فقط عند الخروج من البرنامج (عند "lua_close" وظيفة تسمى).كيفية حل هذه المشكلة ؟
شكرا لك.
المحلول
إذا كان رمز تستخدمه بالضبط كما نشرت أقول لا يزال هناك إشارة في لوا المكدس.محاولة إدراج lua_pop(l, 1) بين luabind::إنشاء كائن و lua_gc الاتصال.
على الجانب علما الحالي إصدار ثابت من luabind هو 0.8.1 هناك 0.9-rc أيضا ؛ قد تحصل على أكثر الإجابات إذا كنت تستخدم بعض النسخة الحالية (سواء هنا أو من luabind-users)
لا تنتمي إلى StackOverflow