C++中定义类的对象:用new和不用new的区别
Point p1;
Point *p2=new Point();
p1 由系統(tǒng)創(chuàng)建并釋放,不用擔(dān)心會(huì)出現(xiàn)內(nèi)存泄露,但是生命期只有在本區(qū)域的大括號(hào)內(nèi),出了大括號(hào)就沒(méi)用了。
P2 是指針,要自己釋放,用不好很危險(xiǎn),用好了功能強(qiáng)大,因?yàn)樗梢再x值給全局的變量,一下子從局部變量變成全局變量,還能把對(duì)象作為函數(shù)返回值。
p1 是在棧空間申請(qǐng)Point大小的空間。new的內(nèi)存區(qū)域是在棧,會(huì)自動(dòng)分配空間,一般在局部變量時(shí)使用,函數(shù)結(jié)束后會(huì)自動(dòng)釋放空間。
p2 這是向堆空間申請(qǐng)一個(gè)sizeof(Point)大小的空間存放Point對(duì)象。(使用new 可以完成對(duì)象的構(gòu)造) 。用new的內(nèi)在區(qū)域是在堆,要自己手動(dòng)分配空間,使用完后要手動(dòng)釋放空間, 另外棧中空間的分配一般在編譯時(shí)就知道大小了,而如果要在運(yùn)行時(shí)分配空間,就要使用堆了
轉(zhuǎn)載于:https://www.cnblogs.com/wufengv5/p/3982155.html
總結(jié)
以上是生活随笔為你收集整理的C++中定义类的对象:用new和不用new的区别的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 求一个好听的星座名字
- 下一篇: adodb.RecordSet的属性和方