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

از ویکی جامع پردیس دانشگاهی دانشگاه قم
پرش به: ناوبری، جستجو
برنامه نویسی پیشرفته
مقاله بعدی:اشاره گرها و آرایه ها
مقاله قبلی:اشاره گرها و آرگومان توابع


تخصیص حافظه پویا:

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

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

  • تخصیص به اندازه نوع

اشاره گر = new نوع ;

delete اشاره گر ;

مثال:

int *p=new int;

delete p;

  • تخصیص به اندازه آرایه ای از یک نوع

اشاره گر=new طول ]نوع] ;

delete[] اشاره گر;

مثال:

int *p=new int p[10];

char *str=new char[20];

delete [] p;

delete [] str;

مثال: برنامه ای بنویسید که n را از ورودی خوانده یک آرایه n عنصری ایجاد کرده آرایه n عنصری را از ورودی خوانده و ماکزیمم آن را حساب کند؟


#include <iostream>
#include <conio.h>
void main(void)
 {
  int n,i,max;
  int *a;
  cin>>n;
  a=new int[n];
  for(i=1;i<n;i++)
   if(max<a[i]
    max=a[i];
  delete []a;
  cout<<"max="<<max;
 }