ثبت نام | ورود

خوش آمدید: مهمان
خانه | لیست مطالب | ارسال مطلب | فروشگاه الکترونیکی | اتاق چت و گفتگو

منو اصلي
اتاق چت گفتگو
کليپ تصويري و نماهنگ
دفتر يادبود
لينک باکس

طنز و سرگرمی
پارس اخبار
نقشه سايت
دنياي خنده و طنز
Sms اس ام اس
اخبار و رسانه ها
آموزش کامپيوتر
IT فن آوري اطلاعات
ورزشي
موفقیت و پیروزی
نجوم و ستاره شناسی
مذهبی
فیلم و سینما
گیاه شناسی
عکس و کاريکاتور
فال و طالع بینی
عشق و دوستی
علمي ، آموزشي
دانلود نرم افزار
آرايش و زيبايي
طنز و سرگرمي
سلامتي و بهداشت
خانه و خانواده
آشپزی
ادبيات
کشاورزي
هنر
کار و تجارت
بیوگرافی
آخرين مطالب ارسال شده
قابليت آزاردهنده را حذف کنيد..
شعبده‌بازي با استفاده از حقا..
چرا خدا مردها را آفريد ؟
ضدآب کردن گوشي موبايل
چگونه يک تلفن همراه در آب اف..
آشنايي با نرم‌افزار امنيت شب..
چطور بفهميم دختري تمايل ازدو..
نمونه خانمهايي که آقايان واق..
10 اشتباه نابخشودني طراحان و..
دسترسي به ليست پرشي ويندوز7
مدل لباس زنانه با دامن کوتاه..
عکس هاي جالب و ديدني
اعتماد به نفس براي يک عمر
اعتماد به نفس ارثي نيست
اعتمادبه‌نفس در 10 روز
عشق‌ ورزيدن‌ به‌ سکوت‌
يوگا براي کودکان
يوگا چيست؟
ده تمرين کششي مهم
يوگا درماني چيست؟
يوگا و خواص آن در ميانسالي
رابطه يوگا و سلامتي
سايت هاي همکار







منتخب برای شما
خانه » لیست موضوعات » آموزش کامپيوتر » زبان هاي برنامه نويسي :: نمایش مطلب

آموزش دلفی (بخش دوم)

  ارسال این مطلب به یک دوست   
 اطلاعات کاربر:
 
 نويسنده مطلب:  ويليام
 محل کاربر: تهران
تمام مطالب کاربر: تمام مطالب توسط ويليام
 
اطلاعات مطلب:
ارسال شده در: پنجشنبه 3 فروردين 1385

متن مطلب:
گزارش مطلب در صورت اهانت آمیز بودن
نمایش داده شده: 1319 دفعه 
 اندازه متن:  1  2  3  4 

مدیریت حافظه در دلفی
تخصیص خودکار حافظه
وقتی شما از نوع های پایه (Integer ،real ،word و…) برای ایجاد متغییرهای خود استفاده می کنید، هیچ نگرانی درباره تخصیص حافظه آن وجود ندارد چون دلفی خودش آنرا تخصیص حافظه می کند و سپس آزاد میکند.



type
TDay = (Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday)
var
Name : String; {256 Bytes}
X, Y : Integer; {4 + 4 = 8 Bytes}
List : array [0..10] of Double; {8 * 11 = 88 Bytes}
Today : TDay; {1 Byte}



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


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

نوع Pointer
اشاره گرها در دلفی می توانند شکل های مختلفی را در برگیرد. نخست، نوع اشاره گری که یک آدرس حافظه را برای نوع ویژه ای از داده، همانند صحیح، رشته و غیره نگه میدارد (Typed Pointer).



var
;Number : ^Integer
;Name : ^String



دوم، اشاره گرهای بدون نوع. اشاره گرهای بدون نوع (Untyped Pointers) خیلی به نوع معمولی خود شبیه هستند. اما محدودیت هایی مثل اینکه باید به نوع خاصی اشاره (Point) کند را ندارد.



var
;Something : Pointer



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



begin
New(Something);
Dispose(Something);
end;



برای تخصیص حافظه کامپایلر باید بداند که نوع داده ما برای تخصیص حافظه چیست:



type
IntPtr = ^Integer;

var
Something : Pointer;
begin
Something := New(IntPtr);
Integer(Something^) := 10;
Dispose(Something);
end;




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



var
Something : Pointer
begin
GetMem(Something, 100);
FreeMem(Something, 100);
end;




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



var
Something : Pointer;
MyString : PChar; // type PChar = ^Char;

begin
GetMem(Something, 100);
MyString := Something;
StrCopy(Something, 'Hello World');
FreeMem(Something, 100);
end;




حافظه Heap
Heap شامل قسمتی از حافظه موجود در یک برنامه است که آنرا حافظه پویا می نامیم. Heap بخشی است که در آن تخصیص و تعریف حافظه به صورت تصادفی (Random) اتفاق می افتد. این به آن معناست که اگر شما سه بلاک از حافظه را به طور متوالی تخصیص دهید، می توانید بعد از هر دستور آنرا از بین ببرید. مدیر Heap جزئیات را برای شما نگهداری می کند. بنابراین شما به سادگی می توانید یک حافظه جدید را با GetMem و یا بوسیله صدا زدن constructor هنگام ساختن یک شی درخواست کنید و دلفی به شما یک بلاک جدید را برخواهد گرداند. Heap یکی از سه فضای موجود در برنامه کاربردی را استفاده کرده و دوتای دیگر به صورت فضای یکپارچه (Global) و پشته قرار می گیرند.


حافظه Stack
Stack شامل قسمتی از یک بخش از حافظه موجود یک برنامه است که دینامیکی است اما برای تخصیص و آزادسازی فرامین مخصوص دارد. تخصیص Stack به صورت LIFO می باشد. این بدان معناست که آخرین حافظه شیء شما تخصیص داه خواهد شد و سپس حذف می شود. حافظه پشته در روتین های نوعی استفاده می شود. وقتی شما یک روتین را صدا میزنید، پارامترهایش و روتین نوع آن در پشته ریخته می شود. همچنین پارامترهایی که در یک روتین تعریف میشوند، در پشته ذخیره میشوند و وقتی روتین خاتمه پیدا می کند تمام آنها به طور خودکار از بین می رود.


↓ تبلیغ های جدید و روز برای شما ↓


 وضعیت: فعال


عضویت دوستان
:: دریافت ایمیل رایگان ::
عکس و کاریکاتور
جوک و اس ام اس
مطالب آموزشی تفریحی

ثبت نام
تبليغات
مطالب روز
بهترين ها
بادام تلخ در درمان سرما..
ورود چند نفره به مسنجر ..
بيش از 50 نوع از کليد ه..
ساختار دقيقترين توپ فوت..
نکاتي مهم و کليدي براي ..
ديدن مبلغ قبض ميان دوره..
زورگوئي و دروغ گویی
فرشته نجات
دستور زبان اصفهاني
رضا صادقي کیست ؟
شکار لحظه هاي ورزشي
خاطرات مدرسه
نقشه و پروژکتور چراغ قو..
اس ام اس شبهاي قدر و شه..
طالع بيني افراد از روي ..
چند تا لطیفه از غضنفر
sms SMS SmS sMs اس مس
چهار قانون شادکامي و مو..
گياهي که موش مي خورد + ..
کاريکاتورهايي در باب لذ..
ده فايده لبخند زدن
آموزش خودكشي (طنز)

تمام مطالب داغ ...
بهترین لینک

 جستجو برای:     فقط با عکس:  
 جستجو در:   جستجو پیشرفته    

همکاری تبلیغاتی | نقشه سایت | شرایط استفاده | تماس با ما |