Qt 中用new來建立物件和非new來建立物件的區別?

時間 2021-05-11 14:10:49

1樓:戰略攻城一獅

補充一下,你沒看到delete 因為程式很小,而在程式結束之後,系統會自己釋放所有程式用到的記憶體

是否New建立物件跟是否用new建立乙個變數是一樣的道理。

主要和記憶體分配有關,

一般變數是自動建立在棧上的,使用new會用堆上的記憶體建立。

而在使用時最直觀的差別就是

1. 非new因為在棧上,所以會隨著所在塊的結束,也就是所在大括號{}之後會銷毀,而函式中return 乙個物件的本質是對它進行了拷貝。

而new因為在堆上,生存週期可以無限延長,你可以通過指標控制它,並且一般不需要進行拷貝。

2.語言上,非new返回的是物件本身,new返回的是物件的指標,使用時需要定址訪問。

3.非new因為在棧上,所以空間有限,能分配的空間相對小。

4.new的生存週期需要自己管理,在使用完要delete ,否則那塊記憶體會始終被占用,如果你的指標不小心銷毀了,那那塊訪問不到的記憶體就再也無法被使用了,也就是洩漏了

2樓:lgxZJ

主要兩點:

1)new出來的是在堆上的,非new的是在棧上的。

2)new出來的需要自己釋放,即需要delete,非new的是自動析構的。

JavaScript中用new操作符建立物件的時候具體發生了什麼過程?

龔代成 第一步 建立乙個空物件,關聯建構函式的原型物件。第二步 執行建構函式,改變this的上下文,給建立的空物件屬性賦值第三步 判斷第二部執行返回的是不是物件 第四部 返回 var new2 function fn else return newObj Jacky Tsai 我也不是特別的清楚,只...

servlet會對每個請求建立乙個執行緒來處理,這不是跟servlet3 0支援非同步處理一樣的嗎?

王磊 servlet容器 如tomcat,jetty 會對每個請求分配乙個執行緒,但servlet預設是單例的,同乙個servlet路徑的多次請求只是呼叫該sevlet的業務方法。阻塞和非阻塞指的是容器的connector的處理方式,tomcat預設就是阻塞的bio,從請求到返回一次執行到底,不會把...

有喜歡國畫的嗎?你會在你的家中用國畫來裝飾嗎,我問了大多數8090後,他們給出的答案是否定的,很渺茫?

藝術天氣 這也不能怪80後,90後。畢竟現在去某寶搜國畫裝飾畫,出來的都是這種畫風。厲害一點的再往前面p個王健林,馬雲。滿屏的富貴感迎面撲來。這與年輕一代追求的簡約 現代貌似一點關係都沒有。但如果是這樣的中國畫呢?又或者是這樣的?可見與現代風格不好搭配並不是中國畫的鍋,漂亮的中國畫不僅淡雅,而且能讓...