كيف يمكنك معرفة الحد الأقصى لحجم مكدس الذاكرة لبرنامج C++ على نظام التشغيل Linux؟(مترجم جنو)

StackOverflow https://stackoverflow.com/questions/682444

  •  22-08-2019
  •  | 
  •  

سؤال

أشعر بالفضول بشأن كيفية معرفة الحد الأقصى لحجم المكدس لمجموعة مترجم/نظام تشغيل معينة.أنا أستخدم مترجم Ubuntu/GNU.بالإضافة إلى ذلك، لدي بعض الأسئلة وهي:

  1. من يتحكم في الحد الأقصى الافتراضي لحجم المكدس؛نظام التشغيل أو المترجم؟
  2. هل يتم قياس الحد الأقصى الافتراضي وفقًا لإجمالي الذاكرة؟(أي أن الجهاز الذي يحتوي على ذاكرة بسعة 2 جيجابايت سيكون له حجم افتراضي أكبر من الجهاز الذي يحتوي على 512 ميجابايت فقط) في هذا المثال، كلا الجهازين لهما نفس إعداد نظام التشغيل/المترجم، فقط كميات مختلفة من ذاكرة الوصول العشوائي للنظام.

شكرًا!

هل كانت مفيدة؟

المحلول

من يتحكم في الحد الأقصى الافتراضي لحجم المكدس؛نظام التشغيل أو المترجم؟

المترجم عادة.نظام التشغيل/الجهاز يحده إلى حد معين.الافتراضي هو 8 ميجابايت على Linux IIRC.افكر في ulimit -s على Linux (لتغيير أحجام المكدس).

هل يتم قياس الحد الأقصى الافتراضي وفقًا لإجمالي الذاكرة؟(أي أن الجهاز الذي يحتوي على ذاكرة بسعة 2 جيجابايت سيكون له حجم افتراضي أكبر من الجهاز الذي يحتوي على 512 ميجابايت فقط) في هذا المثال، كلا الجهازين لهما نفس إعداد نظام التشغيل/المترجم، فقط كميات مختلفة من ذاكرة الوصول العشوائي للنظام.

لا.حتى وما لم تفعل ذلك بنفسك. يمكنك تغيير أحجام المكدس عبر مفاتيح التحويل البرمجي.

ld --stack=<STACK_SIZE>

أو

gcc -Wl,--stack=<STACK_SIZE>

يتعامل معيار C++ مع مسألة المكدسات والأكوام:

يعتمد المعيار على آلة مجردة ولا يهتم حقًا بالأجهزة أو الأكوام أو الأكوام.إنه يتحدث عن متجر مخصص ومتجر مجاني.المتجر المجاني هو المكان الذي ستكون فيه إذا كنت تتصل بشخص جديد (في الغالب).FWIW، يمكن أن يحتوي التطبيق على منطقة ذاكرة واحدة فقط تتنكر على شكل مكدس وكومة عندما يتعلق الأمر بتخصيص الكائنات.

وبالتالي فإن سؤالك يتلخص في كونه مشكلة خاصة بالتنفيذ وليس مشكلة لغوية.

أتمنى أن يساعدك هذا.

نصائح أخرى

في Linux (Ubuntu)، يتحكم نظام التشغيل في الحد الأقصى للحجم.راجع "حدود الرجل" أو "حدود الرجل" للرجوع إليها.

والسؤال الصحيح في أيامنا هذه هو:مقدار الذاكرة المخصصة إلى موضوعي. يحصل كل خيط على مقدار يمكنك التحكم فيه عادةً في وقت إنشاء الخيط.

للإجابة على الجزء الأول، يتعين على المترجم/نظام الخيوط الاختيار، على الرغم من أن بعض أنظمة التشغيل لها حدود (تاريخيًا).

لمدة 2، لا لم يتم تحجيمها.

لا توجد طريقة للقيام بذلك بشكل محمول - فمعيار C++ لا يتطلب في الواقع مكدسًا.

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