C malloc出來的記憶體,可以手動呼叫建構函式嗎?

時間 2021-06-30 14:05:50

1樓:netcan

先分配(不管是堆上還是棧上)預留一塊記憶體,然後按需構造物件,是一件很常見並很合理的事情。

無論是智慧型指標的引用計數控制塊,還是optional的物件等等,都是先手動預留出來一塊記憶體,然後手動按需呼叫對應的建構函式。

這其中涉及兩個問題,預留的記憶體從哪來,可以來自於棧,可以從malloc獲得,也可以通過new得到,又或者從靜態空間得到;第二個問題是如何在已有記憶體上構造物件,需要通過placement new來構造。

2樓:C十十20年

不能夠。手動即不是自動,而是自己直接呼叫,不借助其它手段,如new以後會自動呼叫建構函式。物件的構造是編譯自動完成的,不允許程式設計師自己調建構函式。

為了防止你調建構函式,編譯甚至不允許你取建構函式的位址。參見《C++程式設計精要教程》,對於有虛函式的類,程式設計師無法知道虛函式入口位址表的首址,因此,先分配記憶體再"構造"物件的想法是難於實現的。尤其是當物件是乙個派生類物件時,程式設計師即使能"構造"或初始化這個物件,也難保不省略掉許多中間步驟:

比如沒呼叫基類的建構函式,也許基類建構函式有輸出呢!省略了基類的構造過程,也就省略了基類輸出。自己分配記憶體再"構造",完美復原構造過程不現實。

當然,如果你不想追求完美,還是能"構造"乙個物件的,甚至還能保證物件的函式多型特性不出問題。

有什麼記憶體小又好玩的手遊?

給你一榔頭 月圓之夜,卡牌型別的單機roguelike遊戲。我個人挺喜歡玩的,有多種的結局,策略和故事相互結合。元氣騎士,畫素地牢roguelike遊戲。非常好玩,可單機也可以聯機,聯機分區域網和遠端,跟朋友一起玩是不錯的選擇。taptap上的乙個劇情遊戲,單機戀愛賽博朋克風,要花錢購買的哦,多種結...

第一次約出來玩可以牽她手嗎?

奶奶個熊 瀉藥!我跟我老婆認識是在3年前,那時候我們是同事,我是會計,她是出納,我們部門有10幾個人,其實那時候也沒想到處物件那個層次,主要是我妹也在我們公司 其他部門的 然後不知道怎麼她們成了閨蜜,然後我妹就要我追她 第一次約出來是約好了去萬達廣場看電影,吃飯,當然是我買的單,電影是看的啥來著,忘...

推薦一下 2000元以內價效比高,記憶體大的手機 不玩遊戲不拍照 ?

sparks 2000以內價效比最高的應該就是紅公尺k40了,6 128版本售價1999,8 128售價2199 這款手機搭載驍龍870旗艦處理器,E4材質螢幕,33W滿血版快充,4520mAh大電池 注意 側邊指紋,無3.5mm耳機孔,塑料邊框,無DC調光 這些雖然影響體驗,但是該款手機的價效比還...