' OPERATOR NEW/NEW[] EXPRESSION ' V ' | ' call if there is >----------------------------. ' else : ' v v ' (Operator New/New[] Implicit) (Operator New/New[] Overload) ' : : ' BASIC MEMORY ALLOCATION USER BODY for memory allocation ' : : ' :<-------------------------------------' ' | ' |<-------------------------------------. ' | : ' DATA FIELDS INITIALIZATION : ' OBJECT FIELDS CONSTRUCTION : ' (VPTR INITIALIZATION) : ' | : ' call if there is >-----------. : ' else : : ' v v : ' : (User Constructor) : ' : : : ' : USER BODY : ' : : : ' :<--------------------' : ' | : ' loop if array-version NEW[] >-----------------------' ' else ' v ' | ' V
' OPERATOR DELETE/DELETE[] STATEMENT ' V ' | ' |<-------------------------------------. ' | : ' (VPTR REINITIALIZATION) : ' | : ' call if there is >-----------. : ' else : : ' v v : ' : (User Destructor) : ' : : : ' : USER BODY : ' : : : ' :<--------------------' : ' | : ' OBJECT FIELDS DESTRUCTION : ' | : ' loop if array-version DELETE[] >---------------------' ' else ' v ' | ' call if there is >----------------------------. ' else : ' v v ' (Operator Delete/Delete[] Implicit) (Operator Delete/Delete[] Overload) ' : : ' BASIC MEMORY DEALLOCATION USER BODY for memory deallocation ' : : ' :<-------------------------------------' ' | ' V
' OPERATOR PLACEMENT NEW/NEW[] ' V ' | ' |<-------------------------------------. ' | : ' DATA FIELDS INITIALIZATION : ' OBJECT FIELDS CONSTRUCTION : ' (VPTR INITIALIZATION) : ' | : ' call if there is >-----------. : ' else : : ' v v : ' : (User Constructor) : ' : : : ' : USER BODY : ' : : : ' :<--------------------' : ' | : ' loop if array-version NEW[] >-----------------------' ' else ' v ' | ' V
Operator New Expression Operator New Overload memory allocation: 96 Bytes from @1728352 Constructor init: @1728352 (descriptors) -> {"","","",""} => {"a","b","c","d"} Operator Delete Statement Destructor erase: @1728352 (descriptors) -> {"a","b","c","d"} => {"","","",""} Operator Delete Overload memory deallocation: for @1728352
Operator New[] Expression Operator New[] Overload memory allocation: 200 Bytes from @1728352 Constructor init: @1728360 (descriptors) -> {"","","",""} => {"e","f","g","h"} Constructor init: @1728456 (descriptors) -> {"","","",""} => {"i","j","k","l"} Operator Delete[] Statement Destructor erase: @1728456 (descriptors) -> {"i","j","k","l"} => {"","","",""} Destructor erase: @1728360 (descriptors) -> {"e","f","g","h"} => {"","","",""} Operator Delete[] Overload memory deallocation: for @1728352
Operator Placement New Constructor init: @1375248 (descriptors) -> {"","","",""} => {"m","n","o","p"} User call of Destructor Destructor erase: @1375248 (descriptors) -> {"m","n","o","p"} => {"","","",""}
Operator Placement New[] Constructor init: @1375248 (descriptors) -> {"","","",""} => {"q","r","s","t"} Constructor init: @1375344 (descriptors) -> {"","","",""} => {"u","v","w","x"} User Call of Destructor Destructor erase: @1375248 (descriptors) -> {"q","r","s","t"} => {"","","",""} User Call of Destructor Destructor erase: @1375344 (descriptors) -> {"u","v","w","x"} => {"","","",""}