مدیریت حافظه در ++C – راهنمای جامع

۱۲۸۱ بازدید
آخرین به‌روزرسانی: ۲۶ آذر ۱۴۰۳
زمان مطالعه: ۳ دقیقه
دانلود PDF مقاله
مدیریت حافظه در ++C – راهنمای جامعمدیریت حافظه در ++C – راهنمای جامع

در این مقاله با مدیریت حافظه در ++C به روشی بهینه با استفاده از عملیات حذف/اضافه آشنا خواهیم شد. مدیریت حافظه در ++C زیر مجموعه مدیریت حافظه در برنامه نویسی است. برای مطالعه بخش قبلی این سری مقالات آموزشی روی لینک زیر کلیک کنید:

997696

از آرایه‌ها می‌توان برای ذخیره‌سازی چندین داده همگن استفاده کرد، اما استفاده از آرایه چندین عیب دارد. در زمان اعلان یک آرایه می‌توان حافظه را تخصیص داد، اما در اغلب موارد مقدار دقیق حافظه تا زمان اجرا قابل تشخیص نیست. بهترین کاری که در این حالت می‌توانیم انجام دهیم، این است که آرایه‌ای با بیشینه حافظه مورد نیاز اعلان کنیم. عیب این کار آن است که حافظه استفاده نشده به هدر می‌رود و نمی‌تواند از سوی برنامه‌های دیگر استفاده شود. برای اجتناب از این هدر رفت حافظه، می‌توان حافظه مورد نیاز را در زمان اجرا با استفاده از عملگر new و delete در ++C به صورت دینامیک تخصیص داد.

مثال 1: مدیریت حافظه در ++C

برنامه ++C برای ذخیره‌سازی GPA مربوط به n عدد از دانشجویان و نمایش آن در حالتی که n تعداد دانشجویان وارد شده از سوی کاربر باشد:

خروجی

Enter total number of students: 4
Enter GPA of students.
Student1: 3.6
Student2: 3.1
Student3: 3.9
Student4: 2.9

Displaying GPA of students.
Student1:3.6
Student2:3.1
Student3:3.9
Student4:2.9

در این برنامه تنها حافظه مورد نیاز برای ذخیره‌سازی num، که از سوی کاربر وارد شده، تعداد داده‌های اعشاری است که به صورت دینامیک اعلان شده است.

عملگر new

این عبارت در برنامه فوق یک اشاره‌گر به بخشی از حافظه بازگشت می‌دهد که به قدر کافی برای نگهداری عدد num داده‌های اعشاری کافی است.

عملگر delete

زمانی که حافظه با استفاده از عملگر delete تخصیص یافت، باید مجدداً آزاد شده و در اختیار سیستم عامل قرار گیرد. اگر برنامه از مقدار زیادی از حافظه با استفاده از new استفاده کند، سیستم ممکن است از کار بیافتد، زیرا برای عملکرد صحیح سیستم عامل حافظه‌ای باقی نمی‌ماند. عبارت زیر حافظه را مجدداً در اختیار سیستم عامل قرار می‌دهد:

براکت ها ([]) نشان‌دهنده این هستند که آرایه حذف شده است. اگر لازم باشد یک شیء منفرد را حذف کنید، نیازی به استفاده از براکت نیست:

مثال 2: مدیریت حافظه در ++C

در کد زیر از رویکرد شیءگرا برای مدیریت برنامه فوق در ++C استفاده شده است:

خروجی این برنامه همانند برنامه فوق است. هنگامی که شیء s ایجاد می‌شود، سازنده فراخوانی می‌شود که حافظه‌ای برای داده‌های اعشاری num تخصیص می‌دهد. هنگامی که شیء تخریب می‌شود، یعنی زمانی که شیء از دامنه برنامه خارج می‌شود، تخریبگر به صورت خودکار فراخوانی خواهد شد.

این تخریبگر دستور ;delete[] ptr را اجرا کرده و حافظه را مجدداً در اختیار سیستم عامل قرار می‌دهد.

برای مطالعه قسمت بعدی از این مجموعه مطالب آموزشی می‌توانید روی لینک زیر کلیک کنید:

اگر این مطلب برای شما مفید بوده است، آموزش‌های زیر نیز به شما پیشنهاد می‌شوند:

==

بر اساس رای ۰ نفر
آیا این مطلب برای شما مفید بود؟
اگر بازخوردی درباره این مطلب دارید یا پرسشی دارید که بدون پاسخ مانده است، آن را از طریق بخش نظرات مطرح کنید.
منابع:
programiz
دانلود PDF مقاله
نظر شما چیست؟

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *