حافظه اختصاص داده شده با استفاده از توابع malloc و calloc به خودی خود حذف نمی شود. بنابراین، هر زمان که تخصیص حافظه پویا انجام شود، از روش رایگان استفاده می شود. با آزاد کردن حافظه به کاهش هدر رفتن آن کمک می کند.
چگونه حافظه اختصاص داده شده رایگان می شود؟
در C، تابع کتابخانه malloc برای تخصیص یک بلوک از حافظه روی پشته استفاده می شود. برنامه از طریق یک اشاره گر که malloc برمی گرداند به این بلوک حافظه دسترسی پیدا می کند. هنگامی که دیگر به حافظه نیازی نیست، نشانگر به حالت آزاد ارسال می شود که حافظه را اختصاص می دهد تا بتوان از آن برای مقاصد دیگر استفاده کرد.
اگر حافظه اختصاص داده شده را آزاد نکنید چه اتفاقی می افتد؟
در بیشتر موارد، اختصاص حافظه درست قبل از خروج از برنامه بی معنی است. به هر حال سیستم عامل آن را پس خواهد گرفت. رایگان اشیاء مرده را لمس کرده و صفحه می کند. سیستم عامل این کار را نخواهد کرد. نتیجه: مراقب "نشت یاب" باشید که تخصیص ها را شمارش می کند.
آیا تخصیص حافظه گران است؟
یک اندازه گیری ساده از هزینه تخصیص و آزادسازی بلوک های بزرگ حافظه به این نتیجه می رسد که هزینه آن در حدود 7.5 میکرو ثانیه برای هر تخصیص/جفت رایگان است. با این حال، سه هزینه جداگانه برای هر مگابایت برای تخصیص های بزرگ وجود دارد.
آیا می توان مجدداً فضای حافظه اختصاص داده شده را آزاد کرد اگر بله چگونه؟
عملکرد realloc بلوک حافظه مشخص شده توسط old_blk را بر اساس قوانین زیر تخصیص، تخصیص مجدد یا آزاد می کند: اگر old_blk NULL باشد، یک بلوک جدید حافظه با اندازه بایت استاختصاص داده شده است. اگر اندازه صفر باشد، تابع آزاد فراخوانی می شود تا حافظه ای که با old_blk به آن اشاره شده است آزاد کند.