سؤال

أستمر في الحصول على خطأ نفاد الذاكرة في 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 الخاص بالتطبيق.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top