آموزش برنامه نویسی با c++ سی پلاس پلاس
پیاده سازی سورس کد لیست پیوندی در c++
6 اردیبهشت 1400
آموزش برنامه نویسی با c++ سی پلاس پلاس
نمونه سوال مثال دستور حلقه while در c++
10 اردیبهشت 1400
Show all

تخصیص حافظه پویا دستور new delete در c++

آموزش برنامه نویسی با c++ سی پلاس پلاس

اختصاص تخصیص حافظه پویا دستور malloc new delete در c++

تا کنون برنامه هایی که کار کردیم همه حافظه مورد نیاز برنامه از قبل مشخص میشد و در هنگام نوشتن برنامه با ساخت یک متغیر جدید میزان حافظه مشخص میشد ؛ در این آموزش قصد داریم تا با اختصاص تخصیص حافظه پویا و کار با دستور malloc new delete در c++ آشنا شده و نحوه چگونگی تخصیص حافظه بصورت پویا را در c++ بررسی نماییم.

در خیلی از برنامه ها حجم حافظه ای که برنامه مورد استفاده قرار می دهد از قبل مشخص نیست بلکه در زمان اجرای برنامه این حجم مشخص می شود . در چنین حالتهایی برنامه باید با استفاده از مکانیزم تخصیص حافظه پویا مقدار حافظه لازم را از سیستم را در اختیار بگیرد .

نحوه استفاده و کار با تابع malloc در c++ :

ساختار کلی تابع malloc در c++ بشکل زیر میباشد :

malloc (تعداد بایت مورد نیاز)

 

 

اختصاص تخصیص حافظه پویا دستور malloc new delete در c++

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

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

چنانچه دستور تابع malloc نتواند مقدار حافظه درخواستی را برای ما پیدا کند مقدار برگشتی از این تابع null  خواهد بود .

بنابراین اشاره گری که در آن مقدار Null قرار داشته باشد به جایی اشاره نمیکند.

نحوه استفاده و کار با تابع free در c++ :

از دستور تابع free در c++ جهت آزاد کردن ناحیه اختصاص یافته استفاده مینماییم .

بعد از پایان کار با ناحیه اختصاص یافته در c++ میبایست آن حافظه را آزاد نمود . برای این کار از فراخوانی تابع free بصورت زیر در c++ استفاده مینماییم :

 

 

free (آدرس شروع ناحیه ی تخصیص یافته)

 

 

مثال برای حافظه پویا :

برنامه ای بنویسید که با استفاده از اشاره گرها در c++ تعداد مشخصی عدد را دریافت کند و به اندازه آن حافظه اختصاص دهد ؛ سپس میانگین اعداد وارد شده را حساب کند. در پایان باید برنامه حافظه اختصاص یافته را آزاد نماید .

# include< alloc.h >
void main()
{
   int *p , *h ,n ,i;
   long int sum=0;
   float ave;
   cin>>n;
   p=( int * )malloc (2*n);
   if ( !p )
     {
        puts( " حافظه ی کافی وجود ندارد " );
        exit(1);
     }
   for( i=0 , h=p ; i<n ; i++ , h++)
     {
        scanf( "%d" ,h);
        sum += *h ;
     }
   ave= (float)sum /n;
   cout<< ave;
   free(p);
}

 

آموزش کار با دستور New در c++ :

از دستور new در c++ میتوان جهت اختصاص حافظه استفاده نمود . میتوان از دستور New برای اختصاص حافظه پویا استفاده کرد .

نوع اشاره گر = New نوع حافظه ;
p = new int ;

 

نحوه استفاده و کار با تابع Delete در c++ :

استفاده دستور delete  در c++ جهت آزاد نمودن حافظه تخصیص داده شدهاستفاده میشود .

delete نام اشاره گر ;
delete p ;

 

 


مقدار حافظه ای که توسط تابع malloc اختصاص داده میشود فقط با دستور free آزاد می شود اما حافظه ای که توسط دستور new به برنامه تخصیص داده می شود را می توان با دستور delete آزاد کرد .

فروش تابلو ظرفیت تحت شبکه و دوربین پلاک خوان خودرو دلتا

شرکت مهندسی اندیشه تراشه ویرا

تلفن تماس : 09120613870-02176490358

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد.