首页 新闻 会员 周边

C++ delete的使用

0
[已解决问题] 解决于 2012-02-09 11:25

int i =5;
int *pt = &i;

 

int i =5;
int *pt = new int;
pt = &i;

 这两段 有区别吗??区别在哪里,请稍微详细解释一下,一直都是做.net,最近在研究C++。另外C++要求“不能使用delete来释放声明变量所获得的内存”,这话我不是很懂??上面第一段代码是不是就不能用“delete”来释放??

渡边Q的主页 渡边Q | 初学一级 | 园豆:196
提问于:2012-01-06 15:20
< >
分享
最佳答案
1

分配内存方式一个是栈一个是堆

56180825 | 小虾三级 |园豆:1756 | 2012-01-06 15:54

如果lz改为

int *pt = new int;
*pt = i;

就会如你说的:分配内存方式一个是栈一个是堆

左手程序右手诗 | 园豆:82 (初学一级) | 2012-03-08 16:43
其他回答(2)
1

nt *pt = new int;  //a
pt = &i; //b

区别是,这样会内存泄露!!! 你在a申请到的地址,被b赋值是pt指向了i的地址。

左手程序右手诗 | 园豆:82 (初学一级) | 2012-03-08 16:44
0

第一段没什么问题,第二段是内存泄露。你那句话比较别扭,怀疑你那句话的意思是,在栈上构造的对象不需要delete。编译器会在函数返回的时候自动释放。

hoodlum1980 | 园豆:559 (小虾三级) | 2012-06-07 16:53
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册