ورود

View Full Version : delete pointer



marvel
سه شنبه 05 دی 1385, 14:22 عصر
سلام
به نظر شما متغیر achData در این کد را کجا باید delete کرد؟




char* achData=new char[100];//where do delete this pointer?
strcpy(achData,"Hello");//this pointer must initialize out of loop
for(;;)
{
char *ch=new char[100];
strcat(ch,achData);
if(ch)
{
delete[] ch;
ch=NULL;
}
}

if(achData)//This code will not run never
{
delete[] achData;
achData=NULL;
}

hasina
سه شنبه 05 دی 1385, 14:37 عصر
فکر کنم بعد از حلقه for

mzjahromi
سه شنبه 05 دی 1385, 15:03 عصر
این کد قراره چه کاری رو انجام بده؟

alireza643
چهارشنبه 06 دی 1385, 11:49 صبح
این یعنی چی

if(achData)//This code will not run never
{
delete[] achData;
achData=NULL;
}

marvel
چهارشنبه 13 دی 1385, 14:37 عصر
من این کد را برای مثال نوشتم به طور کلی سوال من اینه:
معمولا هر اشاره گری که new میشه باید delete بشه ، درسته؟
حالا گاهی اوقات اتفاق می افته که یه اشاره گر new می کنیم و از این اشاره گر داخل یک حلقه بی نهایت استفاده می کنیم. چون این حلقه بی پایانه اگر بعد از حلقه for بخواهیم delete کنیم، هرگز delete نمیشه و داخل حلقه هم نباید delete کنیم چون به مقدار آن نیاز داریم.ازطرفی هم این اشاره گر حتما باید خارج از حلقه new و مقدار دهی بشه.

با این توصیفات یعنی لازم نیست این اشاره گر delete بشه؟

galaxy.ice
شنبه 16 دی 1385, 11:12 صبح
عزیزم در هر حال یه وقتی برنامت از حلقه باید خارج شه دیگه!مثلا بایه break تو یه if که قبلش delete رو مینویسی!