C++ 内存基本构件 placement new
生活随笔
收集整理的這篇文章主要介紹了
C++ 内存基本构件 placement new
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
用法以及編譯器解釋
placement new 允許我們將object構建于已經分配的內存上。(所以此時必須有個指針指向已經分配好的內存)
沒有所謂的placement delete ,因為placement new根本沒有分配內存.
也有種說法,是將placement new對應的內存釋放掉的操作為placement delete。
被編譯器轉為:
Complex *pc; try{1、void mem = operator new(sizeof(Complex),buf); //在頂點內存2、pc = static_cast<Complex*>(mem); //轉型3、pc->Complex::Complex(1,2); //調用構造函數 } catch(std::bad_alloc){//若allocation失敗就不執行構造函數 }pc、buf指向同一個地方。
關于operator new,此處用的函數與之前提到的函數有點不一樣:https://blog.csdn.net/qq_42604176/article/details/111638568
這里的用法為:
你傳遞分配好的內存給它,它什么都沒做,將地址返回。
于是我們可以總結,placement new就是調用了構造函數。
注意,這三種寫法是一致的:
總結
以上是生活随笔為你收集整理的C++ 内存基本构件 placement new的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 1080×1920分辨率超过2m吗?
- 下一篇: dnf开什么罐开的到流光星陨刀?