作者charleshu (Analog Engineer)
看板Programming
标题Re: [问题] C/C++程式区块中变数宣告与消灭
时间Mon Apr 26 11:30:30 2010
※ 引述《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
1F:推 magica:请问auto指的是auto_ptr吗? 70.120.191.246 04/26 13:46
2F:→ magica:auto keyword我只有看到VC++与c++0x有... 70.120.191.246 04/26 13:47
3F:→ james732:宣告一个变数 int i; 就预设为 auto 140.117.171.46 04/26 13:55