ورود

نسخه کامل مشاهده نسخه کامل : مدریت حافظه در c++ ؟



khatat
16-03-2009, 11:41
سلام دوستان من دارم با c++ کار می کنم و از IDE خاصی هم استفاده نمی کنم
ولی شنیدم که در زبان c++ مدیریت حافظه به صورت دستی انجام می شه و نه مثل زبان های VB که به صورت اتوماتیک انجام می شه من در مورد pointer و dynamic memory یه سری مطالبی خوندم ولی یه سوال برام پیش اومده که می خواستم کمکم کنید :
کد زیر که یه حلقه for هست رو در نظر بگیرید :


for (int i=0; i<10;i++)
{
//some code here
}

حالا تو کد بالا متغیر i بعد از اتمام شدن حلقه از تو حافظه پاک می شه ؟ یا نه باید متغیر i رو به صورت pointer تعریف کنم و بعد خودم اون رو با دستور delete پاک کنم ؟
وهمین طور برای متغیر هایی که به عنوان argument در یک function تعریف می کنیم مثل

void goToLine(int i)
آیا متغیر i بعد از این که این فانکشن به انتها رسید پاک می شه یا باز باید به صورت pointer تعریف بشه و همین طور سایر متغیر هایی که به صورت local و global معرفی می شن ؟
ممنون می شم به این دو سه مورد جواب بدید گرچه فکر کنم همشون مثل هم باشن:11:

humphry
16-03-2009, 12:12
dar sorati ke dakhele for moteghayere i ro tarif koni bale bad az for i mojood nist va pak mishe
dakhele har tabe moteghayerha locale tabe hastan va pak mishan
mage in ke az fazaye heap ekhtesas peyda karde bashan

lind008
10-09-2010, 23:35
دوست عزیز همه اینهایی که شما گفتی خودش ازاد میشه
چون فضاش رو سیستم عامل برات گرفته نه خودت
مثلن در صورت زیر ازاد نمی شه چون خودت فضا رو allocate کردی
int * a = new int[10]
بعد باید اینطوری ازادش کنی
delete [] a