Re: [問題] C/C++程式區塊中變數宣告與消滅

看板Programming作者 (Analog Engineer)時間14年前 (2010/04/26 11:30), 編輯推噓1(102)
留言3則, 2人參與, 最新討論串2/2 (看更多)
※ 引述《magica (似我非我)》之銘言: : 在C/C++中所有的程式區塊(就是{}括弧)中的變數在離開區塊時會消滅 : for ex. : 我的問題是, 如果我在{}中使用pointer.. : for ex : #include <iostream> : using namespace std; : int main() : { : { : int *i=new int(0); 宣告了一個auto變數i,並從heap分配了一個int大小的記憶體後將其位置設定至i中. : cout << *i; : } 離開了i的scope,回收儲存i的記憶體,但沒有回收之前new來的記憶體. Memory leakage!!!!!! : { : int *i=new int(1); 再宣告了一個新的auto變數i,細節同上. : cout << *i; 又leakage了一塊記憶體. : } : return 0; : } 建議你針對 C++的記憶體管理, auto 變數與heap部分多加研究. 觀念上的問題不容易幾句話就讓你明白,而且已經有很多好的教科書如C++ primer...等聖 經本. 在此就不再班門弄斧說明那些細節了. -- Do not depend on others without effort... 當我年輕時,請教別人問題時常聽到上面那句話. 當時心裏偶而會有些小小抱怨. 當時間過去,我偶而會想到上面那句話, 心中十分感謝當初告訴我那句話的人. 當發現問題時,最有價值的不是問題的答案, 而是找到解決的方向,並在努力的過程裡具備解決問題的能力. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 211.74.232.239

04/26 13:46, , 1F
請問auto指的是auto_ptr嗎?
04/26 13:46, 1F

04/26 13:47, , 2F
auto keyword我只有看到VC++與c++0x有...
04/26 13:47, 2F

04/26 13:55, , 3F
宣告一個變數 int i; 就預設為 auto
04/26 13:55, 3F
文章代碼(AID): #1BrGZPtS (Programming)
文章代碼(AID): #1BrGZPtS (Programming)