int i =5;int *pt = &i;
int i =5;int *pt = new int;pt = &i;
这两段 有区别吗??区别在哪里,请稍微详细解释一下,一直都是做.net,最近在研究C++。另外C++要求“不能使用delete来释放声明变量所获得的内存”,这话我不是很懂??上面第一段代码是不是就不能用“delete”来释放??
分配内存方式一个是栈一个是堆
如果lz改为
int *pt = new int;*pt = i;
就会如你说的:分配内存方式一个是栈一个是堆
nt *pt = new int; //apt = &i; //b
区别是,这样会内存泄露!!! 你在a申请到的地址,被b赋值是pt指向了i的地址。
第一段没什么问题,第二段是内存泄露。你那句话比较别扭,怀疑你那句话的意思是,在栈上构造的对象不需要delete。编译器会在函数返回的时候自动释放。