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

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

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

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

خروجی

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

عملگر new

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

عملگر delete

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

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

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

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

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

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

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

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

==

میثم لطفی (+)

«میثم لطفی» دانش‌آموخته ریاضیات و شیفته فناوری به خصوص در حوزه رایانه است. وی در حال حاضر علاوه بر پیگیری علاقه‌مندی‌هایش در رشته‌های برنامه‌نویسی، کپی‌رایتینگ و محتوای چندرسانه‌ای، در زمینه نگارش مقالاتی با محوریت نرم‌افزار نیز با مجله فرادرس همکاری دارد.

آیا این مطلب برای شما مفید بود؟

نظر شما چیست؟

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