天天看點

c++中new在子函數中的使用

寫完一個程式後有一點困惑,為什麼不會崩潰?

程式大緻如下:

#include<iostream>
struct free{
	int i;
}; 
const free & clone(free& ft){
	free *pt = new free;
	*pt=ft;
	return *pt;
}
int main(){
	using namespace std;
	free in;
	in.i=0;
	cout<<(clone(in).i);
}
           

如果将

free *pt = new free;
           

改變為  free   pt,程式會崩潰。

經過查閱資料發現,new之後得到的空間不會随着函數的結束而結束,需要自己用delete釋放空間,否則會導緻記憶體洩漏。