看板 Programming 關於我們 聯絡資訊
※ 引述《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
magica:請問auto指的是auto_ptr嗎? 70.120.191.246 04/26 13:46
magica:auto keyword我只有看到VC++與c++0x有... 70.120.191.246 04/26 13:47
james732:宣告一個變數 int i; 就預設為 auto 140.117.171.46 04/26 13:55