مقاله کامل بعد از پرداخت وجه
لینک پرداخت و دانلود در "پایین مطلب"
فرمت فایل: word (قابل ویرایش و آماده پرینت)
تعداد صفحات: 37
مدیریت حافظه و منابع
C++ در مدیریت حافظه انعطاف زیادی دارد ، اما تعداد کمی از برنامه نویسان C++ مکانیسم های در دسترس و مورد استفاده و موجود را به طور کامل درک کرده اند .در این محیط برنامه نویسی ، سربار گذاری ، سازنده ها و مخرب ها ، استثناء ها ، توابع مجازی و استاتیک ، توابع عملگر و غیر عملگر همه با هم برای ایجاد انعطاف پذیری زیاد و مدیریت حافظه سفارشی ، می آیند . متاسفانه ، و شاید به دلیل اجتناب ناپذیر بودن ، همه اینها می توانند موجب کمی پیچیدگی شوند .
در این فصل ، ما نگاهی داریم به ابنکه چگونه خصوصیات و ترکیبات مختلف C++ در مدیریت حافظه مورد استفاده قرار می گیرند ، چگونه گاهی اوقات به طور شگفت انگیز واکنش نشان می دهند ، و چگونه واکنش هایشان را ساده می کنند .
از آنجاییکه حافظه فقط یکی از منابع مدیریت برنامه است ، ما نگاهی به چگونگی وابسته کردن دیگر منابع به حافظه می کنیم چنان که ما می توانیم به خوبی از امکانات سطح بالای مدیریت حافظه C++ برای اداره کردن منابع دیگر استفاده کنیم .
شکست در متمایز کردن تخصیص Array و Scalar
آیا یک Widget همان آرایه ای از Widget ها است ؟ البته که نه . چرا تعدادی از برنا مه نویسان C++ از یافتن عملگرهای مختلفی که برای اختصاص دادن و آزاد کردن آرایه ها واسکالرها استفاده شده است ، تعجب می کنند ؟
ما چگونگی اختصاص دادن و آزادکردن یک Widget را می دانیم.ما برای این کار از عملگرهای new و delete استفاده می کنیم .
Widget *w = new Widget( arg );
// . . .
delete w;
برخلاف بیشتر عملگرها در C++ ، رفتار عملگر new نمی تواند با سربارگذاری تغییر کند . عملگر new همیشه یک تابع را بنام عملگر new برای فراهم کردن حافظه فراخوانی می کند ، سپس ممکن است ان حافظه را مقدار دهی اولیه کند . در مورد Widget ، نامبرده ، با استفاده از عملگر new موجب فراخوانی یک تابع عملگرnew خواهد شد که یک پارامتراز نوع size_t می گیرد ، سپس درخواست یک سازنده Widget روی حافظه ای که مقداردهی نشده است خواهد کرد که توسط عملگرnew برای ایجاد یک شئ Widget برگردانده شده است .
عملگر delete یک تخریب کننده را روی Widget درخواست می کند و سپس یک تابع عملگر delete را برای آزاد کردن حافظه ی اشغال شده ی قبلی توسط شئ Widget فراخوانی می کند .
آزمایشگاه سیستم عامل, مدیریت حافظه و منابع (انگلیسی-فارسی)