سرریز بافر: تفاوت میان نسخهها
محتوای حذفشده محتوای افزودهشده
قرار دادن {{دادههای کتابخانهای}} با اطلاعات ویکیداده |
|||
خط ۱۰:
== تشریح ==
امروزه بیشتر سیستمعاملهای مدرن از یک [[پشته]] برای ارسال آرگومانها به توابع و همچنین ذخیره کردن متغیرهای محلی استفاده میکنند. یک پشته، حافظهای به صورت LIFO است که ورود و خروج اطلاعات از یک طرف انجام میگیرد. بنابراین آخرین شیئی که وارد پشته شده، اولین شیئی است که از آن خارج میشود. هر [[فرایند]] برای خود پشتهای دارد که آرگومانهای توابع و متغیرهای محلی در آن ذخیره میشوند و این پشته در بالاترین آدرس تصویر فرایند در حافظه قرار دارد. وقتی که یک برنامه تابعی را فراخوانی میکند، یک «قاب پشته» جدید ایجاد میشود. این قاب پشته علاوه بر اینکه دربرگیرنده آرگومانهایی است که به تابع ارسال شدهاند، دربرگیرنده فضایی پویا برای متغیرهای محلی تابع است. «اشارهگر پشته» [[ثبات|ثباتی]] است که آدرس بالای پشته را نگه داری میکند. از آنجا که هر وقت مقدار جدیدی وارد پشته میشود محتوای این ثبات هم تغییر میکند، در خیلی از موارد یک «اشارهگر قاب» هم وجود دارد که در ابتدای پشته قرار دارد تا بر اساس این اشارهگر بتوان به متغیرهای محلی راحتتر دسترسی پیدا کرد. اما
== جلوگیری ==
خط ۱۵۵:
{{دادههای کتابخانهای}}
[[رده:اشکالهای برنامهنویسی]]
[[رده:حافظه رایانه]]
|