آموزش C

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

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

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

تصویر c-memory-management_4171 مدیریت حافظه در زبان C - آموزش زبان C

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

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

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

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

2void free(void *address);

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

3void *malloc(int num);

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

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

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

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

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

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

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

امتحان کنید

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

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

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

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

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

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

امتحان کنید

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

 

باکس دانلود
ثبت نظر
ریفریش کنید!
نظرات کاربران (۰ مورد)

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