傳回 new 的物件 |
答題得分者是:richtop
|
雲中鵝
一般會員 發表:14 回覆:24 積分:7 註冊:2004-12-21 發送簡訊給我 |
#include
------
Try it! |
GeorgeKu
中階會員 發表:1 回覆:120 積分:74 註冊:2004-10-13 發送簡訊給我 |
雲中鵝, 在main裡面,你先new了一個int給c,之後又在自訂函數裡面回傳一個new出來的int空間,並且指派給c,當你刪除c的時候,它刪除的是函數裡所new出來的那個空間,因此在main中所new出來的空間並未被得到釋放,這就型成memory leak的情況.
至於為何你在delete c之後,去讀取c值還讀的到原先的值,這是因為delete只是釋放掉這個記憶體空間,但是它並不會把記憶體的內容清除掉,因此在這塊記憶體還未重新指派給其他地方使用之前,你讀取到的值因該還是不會變的.
|
暗黑破壞神
版主 發表:9 回覆:2301 積分:1627 註冊:2004-10-04 發送簡訊給我 |
|
richtop
資深會員 發表:122 回覆:646 積分:468 註冊:2003-06-10 發送簡訊給我 |
雲中鵝 您好: 我之前一直以為您是雲中"鶴"!
底下說明供您參考. < class="code">
int* max(int &p,int &q)
{ int *i=new int(p);//test
int *j=new int(q); if (*i>*j)
{ delete j;
return (i);
}
else
{ delete i;;
return (j);
}
} void main()
{
int a=3,b=5;
int *c=new int; c=max(a,b); //此行將造成原先c中所配置用來儲存一個整數的記憶體空間漏失掉!
*c=*c 10;
cout<<*c<
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |