يقوم LuaJit بزيادة حجم المكدس/الكومة
سؤال
أستمر في الحصول على خطأ نفاد الذاكرة في LuaJit.كيف يمكنني زيادة حجم المكدس أو الكومة؟
شكرًا
المحلول
لم أستخدم LuaJIT بنفسي، باستثناء أمثلة الألعاب.ولكن بما أنه لم يقدم أي شخص آخر أي إجابات حتى الآن ...
من القشط توثيق, يعتمد LuaJIT على امتدادات Coco لمكتبة coroutine القياسية.أحد التغييرات التي أدخلتها Coco هو أن الوظائف التي تنشئ كوروتينًا جديدًا تأخذ الآن وسيطة اختيارية تحدد حجم المكدس.
نقلا عن مستندات كوكو:
coro = coroutine.create(f [, cstacksize])
func = coroutine.wrap(f [, cstacksize])
الحجة الاختيارية
cstacksize
يحدد حجم المكدس C لتخصيصه لـ Coroutine:
- يتم استخدام حجم المكدس الافتراضي إذا
cstacksize
لا يعطى أو هوnil
أو الصفر.- لم يتم تخصيص مكدس C إذا
cstacksize
يكون-1
.- يتم تقريب أي قيمة أخرى إلى الحد الأدنى للحجم (أي.يستخدم
1
للحصول على الحد الأدنى للحجم).
هناك أيضًا الوظيفة الجديدة coroutine.cstacksize([newdefault])
يقوم بتعيين حجم مكدس C الافتراضي، بالإضافة إلى بعض التغييرات المقابلة لواجهة برمجة تطبيقات C.
علاوة على ذلك، هناك العديد من خيارات تكوين وقت الترجمة في إصدار LuaJIT من luaconf.h.قد يكون هناك شيء ما يضبط الإعداد الافتراضي.في نظام التشغيل Windows، يوجد أيضًا إعداد وقت الارتباط للمكدس الأساسي للملف القابل للتنفيذ، والذي يتم تعيينه بواسطة LINK.EXE الخاص بـ MSVC عبر عبارة STACKSIZE في ملف .DEF الخاص بالتطبيق.