Uygulamamın Lua bölümünde bir bellek sızıntısı var. Her ne sebeple olursa olsun, nesneyim silinmiyor (collectgarbage("collect")
'u aradığımda bile). Bunun bir yerde sarkan bir referansım olduğu anlamına gelir.Lua'da bir nesneye ait tüm referansları bul
Nesneye çeşitli referansların bulunduğu bir listeyi nasıl edinebilirim? Örneğin:
obj = MyObject()
ref = obj
tbl = {obj}
obj = nil
print(getreferences(obj)) -- should print something like _G.ref, _G.tbl[1]
Ben sadece bunun için kendi işlevi yazardı ama kapanışları içinde bulunan referanslar bulmak mümkün olmaz. Herhangi bir tavsiye?
Lua tabloları ve nesnelerinin adları yoktur. Bu nedenle, tek yapmanız gereken çok yararlı olmayacak olan masa adreslerinin bir listesidir. –
@Nicol Bolas: Bu tamamen doğru değil. En üst seviyeden başlayacak olsaydım, _G ve çiftleri (_G), aradığım şeyi eşleştirdiğim bir anahtar bulana kadar yolumun üzerinde çalışacak olsaydım, referansın tam yolunu alırdım. Kapağın dışından gelen kapaklarda bulunan değerlere nasıl erişileceğini bilmiyorum. – Ponkadoodle
Peki ya masa bir _key_? Bu tamamen yasal Lua kodu. Tablodaki anahtar bir dizge değilse ne olur? Ya da tümüyle mümkün olan global tabloda değil. Kayıt defterinde olabilir veya bir fonksiyonun yerel ortamında olabilir. Lua, tüm nesnelerin '_G''den erişilebilir olmasını gerektirmez. –