
' 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"} => {"","","",""}