Jump to content
Forumu Destekleyenlere Katılın ×
Paticik Forumları
2000 lerden beri faal olan, çok şukela bir paylaşım platformuyuz. Hoşgeldiniz.

c/c++' den çağrılan lua ile ilgili ufacık bir soru.


Fly

Öne çıkan mesajlar

bir lua dosyasını yukleyip calistiriyorum, içindeki fonksiyonu return çağırıp değerini bir yere alıyor, stackten de siliyorum. son olarak da kapatıyorum. kod gerekmiyor muhtemelen de yine de ilgili kısmı koyayım :



Lua_State main_deneme;
cout << main_deneme.loadfile("./deneme.lua");
lua_getfield(main_deneme,LUA_GLOBALSINDEX,"z");
lua_pushstring(main_deneme,"adasd");
int ef=0;
if(lua_pcall(main_deneme,1,1,ef)) {
cout << (string)lua_tostring(main_deneme,-1); fflush(stdout);
lua_pop(main_deneme,1);
}
lua_Integer i=lua_tointeger(main_deneme,-1);
cout << i;
lua_pop(main_deneme,1);
lua_close(main_deneme);


(Lua_State içinde bir lua_State* değişkeni ve metodlar barındıran bir class, operatör sayesinde direk kendisini koyunca içindeki state'e yönlendiriyor. classta sorunlu bir şey olmadığından eminim)

loadfile metodu luaL_dofile'ı çağırıyor sadece, ekstrem bir iş yapmıyor



asıl sorun kapadıktan sonra aynı state ile yeni bir dosya açmaya kalkınca ; segmentation fault veriyor.

hatta yukarıdaki haliyle bile close çağrısı yine sorun çıkartıyor (linuxtayım, sigabrt veriyor mesela)

close yapmak yerine ardından direk yenisini yükleyeyim dedim yukarıdakinin aynısını c/p yaparak, çalıştı hiç sorun çıkarmadan.

bu stack ortada bir yerde çöp oluyordur freelemezsem diye başka bir programla (valgrind) test ettim, leak veya sorunlu çağrı yok dedi.

program tamamen kapanırken sorun çıkarmasında sakınca şimdilik yok ama programın yaptığı olay gelen birkaç bağlantıya karşılık olarak hemen bir lua dosyasını yükleyip onlardaki değerleri iletmece şeklinde olduğu için her olası dosyaya bir state atamaktansa istek geldikçe yüklesin diyorum, bu şekilde close mlose demeden devamlı yeni açsam leaktir şudur budur sorun çıkarır mı, uzun süre luayla uğraşmış biri cevap verebilir mi ?

tşkler.
Link to comment
Sosyal ağlarda paylaş

×
×
  • Yeni Oluştur...