آموزش C

مباحث پایه زبان C

مدیریت حافظه در زبان C – آموزش زبان C

  • چهارشنبه ۲ آبان ۱۳۹۷
  • بازدید ۴۲۹ نفر

c memory management 4171 تصویر

مدیریت حافظه در زبان C

در این بخش نحوه مدیریت حافظه به صورت پویا توضیح داده شده است. در زبان برنامه نویسی C توابع تخصیص و مدیریت حافظه مختلفی وجود دارد که در هدر فایل stdlib.h قرار دارند.

ردیفتوضیحات
۱void *calloc(int num, int size);

فضای حافظه مورد نیاز یک آرایه را به طول num اختصاص می دهد. با مقدار دهی اولیه.

۲void free(void *address);

این تابع فضای حافظه اختصاص داده شده را آزاده می کند.

۳void *malloc(int num);

فضای حافظه مورد نیاز یک آرایه را به طول num اختصاص می دهد. بدون مقدار دهی اولیه.

۴void *realloc(void *address, int newsize);

این تابع فضای اختصاص داده شده رو با اندازه جدید به روز می کند.

اختصاص حافظه به صورت پویا

در برنامه نویسی تعریف یک آرایه که اندازه معلوم و مشخصی دارد کار راحتی است. برای نمونه اگر بخواهید نام هر فرد را ذخیره کنید، یک آرایه با طول ۱۰۰ کاراکتر تعریف می کنید مانند نمونه زیر:

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

به مثال زیر توجه کنید:

امتحان کنید

زمانی که کد بالا توسط کامپایلر زبان C و اجرا شود، نتیجه زیر را تولید خواهد کرد:

مثال فوق را می توان با استفاده از تابع calloc() نیز نوشت:

بنابراین موارد فوق در هنگام استفاده از حافظه پویا، شما به راحتی می توانید اندازه آرایه بر اساس نیاز خود تنظیم کنید. در حالی تغییر اندازه آرایه های عادی امکان پذیر نیست، زیرا آن ها اشاره گر ثابت هستند.

تغییر اندازه و آزاد سازی حافظه

در حالت عادی هنگامی که اجرای برنامه شما پایان می یابد، سیستم عامل به طور خودکار آن را از حافظه خارج می کند و فضای حافظه آزاد می شود. اما زمانی که از تخصیص حافظه پویا استفاده کرده باشید، هنگامی که کارتان تمام شد و دیگر نیازی به حافظه ندارید، می توانید آن را با استفاده از تابع free() آزاده کنید.

در زبان C شما می توانید با استفاده از تابع realloc() اندازه حافظه اختصاص داده شده را کم یا زیاد کنید. مثال زیر تغییر یافته مثال فوق می باشد که در آن از توابع realloc() و free() استفاده شده است:

امتحان کنید

زمانی که کد بالا کامپایل و اجرا شود، نتیجه زیر را تولید خواهد کرد:


باکس دانلود
شناسه:
۴۱۷۱
لینک دانلود:
جهت دانلود در کانال تلگرامی (ID: @Sourcesara) عضو شده و از لینک زیر دانلود را انجام دهید
ثبت نظر
ریفریش کنید!
نظرات کاربران (۰ مورد)

هیچ نظری ثبت نشده است