دوره های آموزشی آکادمی پی وی لرن (پروژه محور و ویژه بازار کار)



  • ۲۹
  • مرداد

جلسه ۳۱ : مدیریت حافظه در ++C

  • دسته‌بندی‌ها :
جلسه ۳۱ : مدیریت حافظه در ++C
    • جزئیات
    • نوع محتواآموزش تصویری

      با عرض سلام و وقت بخیر خدمت کاربران سایت پی وی لرن ، با یکی دیگر از جلسات دوره کامل آموزش ++C در خدمت شما دوستان هستیم . در بخش قبلی با اشاره گر ها و توابع در ++C آشنا شدید، در این جلسه قصد داریم به آموزش مبحث مهم مدیریت حافظه در ++C و عملگر delete در ++C بپردازیم.

      مدیریت حافظه در زبان سی پلاس پلاس بر خلاف زبان های دیگر به صورت خودکار نیست و باید حافظه ای که توسط عملگر new اخذ کرده ایم را بعد از اتمام کار به حافظه برگردانیم.

      مدیریت حافظه در ++C

      در جلسات قبل گفتیم که آرایه ها برای ذخیره چندین مقدار هم نوع استفاده می شوند.
      اما استفاده از آرایه ها چند اشکال جدی دارد.

      شما هنگام تعریف آرایه باید حافظه ای را که نیاز دارد هم اخذ کنید و در بیشتر موارد حافظه اخذ شده تا پایان اجرای برنامه آزاد نمی شود.

      فرض کنید قرار است نمره اعشاری دانشجویان که تعداد آن ها نامعلوم است را در یک آرایه ذخیره کنید.
      چون تعداد دانشجویان مشخص نیست باید یک حدی را مثلا ۱۰۰۰ فرض کنیم و آرایه را بر اساس آن تعریف کنیم.
      حال اگر تعداد دانشجویان از ۱۰۰۰ بیشتر باشد به مشکل بر می خوریم و یا اگر تعداد آن ها سه نفر باشد، ۹۹۷ خانه دیگر آرایه بلا استفاده خواهد ماند.

      برای رفع این مشکل از آرایه های پویا استفاده می کنیم.

      آرایه های پویا به صورت پویا می توانند عناصر خود را در طول برنامه با استفاده از عملگر new اخذ کنند و با عملگر delete آن ها را حذف کنند. (آزاد کنند)

       

      مثال ۱:

      برنامه زیر GPA چند دانشجو را از کاربر دریافت کرده و آن ها را نمایش می دهد:

      مثال : 

      خروجی به شکل زیر می باشد:

      مثال : 

      در برنامه بالا حافظه ای که برای آرایه مورد نیاز است به صورت پویا توسط کاربر تعیین می شود و حافظه هدر نمی رود.

       

      عملگر new در ++C

      مثال : 

      عبارت بالا یک اشاره گر به قطعه ای از حافظه که که به اندازه num حافظه را اشغال کرده است بر می گرداند. اندازه این آرایه می تواند تغییر کند.

      درواقع این عملگر مقداری از حافظه را در اختیار ما می گذارد که مسئولیت مدیریت آن تا هنگام اجرای برنامه با خود ماست.

       

      عملگر delete در ++C

      حافظه ای که توسط عملگر new اخذ شده است، بعد از اتمام کار باید به سیستم عامل برگردانده شود.
      این کار با استفاده از عملگر delete انجام می شود.

      دستور زیر برای آزاد سازی حافظه یک آرایه پویا  انجام می شود:

      مثال : 

      دستور زیر نیز برای آزاد سازی یک متغیر تنها استفاده می شود:

      مثال : 

       

      مثال ۲

      در این برنامه از مثال قبلی به صورت شی گرایی (استفاده از class) استفاده کرده ایم:

      مثال : 

      خروجی مانند مثال قبل می باشد.

      هنگامی که شی s ایجاد می شود، سازنده شی فراخوانده می شود که به اندازه num حافظه را اخذ می کند.

      هنگامی هم که شی از بین می رود، مخرب شی حافظه اخذ شده را آزاد می کند.

       

       

      جلسه آموزش مدیریت حافظه در ++C نیز به پایان رسید.
      در جلسه آینده به آموزش ساختمان ها در ++C خواهیم پرداخت. با ما همراه باشید

      QR:  جلسه ۳۱ : مدیریت حافظه در ++C
      به اشتراک بگذارید