كيفية منع فائض المكدس عن طريق مراقبة حجم المكدس؟

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

  •  06-09-2019
  •  | 
  •  

سؤال

كان العديد من C / C ++ / FORTRAN وغيرها من المبرمجين قد صادفوا أخطاء "تجاوز سعة مكدس". سؤالي هو، هل هناك أداة أو برنامج أو مقتطف رمز بسيط، تتيح لنا مراقبة حجم المكدس أو التحقق منها أثناء تشغيل البرنامج؟ قد يكون هذا مفيدا لتحديد حيث يتم تجميع المكدس وتسبب في نهاية المطاف الفائض.

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

المحلول

لا أعرف إذا كان هناك برنامج يفعل ذلك من أجلك، ولكن يمكنك بسهولة التحقق من داخل الوظيفة حيث يكون مؤشر المكدس (على الأقل في C و C ++). مجرد إلقاء نظرة على موقع الذاكرة في أي متغير. لن يكون الموقع بالضبط، ولكن يجب أن يكون ضمن بضعة بايت (وهو أمر جيد لأغراضك)، حيث يتم تعريف المتغيرات المحلية على المكدس. إذا كنت تريد القيمة الدقيقة التي يمكنك الحصول عليها من خلال التجميع وأعتقد ذلك.

قد يكون من الأسهل أن ننظر فقط إلى تتبع المكدس عند تعطل البرنامج.

نصائح أخرى

الق نظرة على هذا سؤال. وبعد الإجابة المقبولة تشير إلى ريموند تشن:

If you have to ask, you're probably doing something wrong.

إذا كنت بحاجة بالتأكيد للقيام بذلك، فستكون الحل / الأداة تعتمد على النظام الأساسي. هناك خدعة واحدة سهلة هي ملء المكدس بقيمة بايت معروفة (مثل AA) ومراقبة موضع البايت الأول الذي لا يحتوي على هذه القيمة. هذا سوف يمنحك الحد الأقصى لحجم المكدس المستخدمة، وليس حجم المكدس الحالي.

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