寫完一個程式後有一點困惑,為什麼不會崩潰?
程式大緻如下:
#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釋放空間,否則會導緻記憶體洩漏。