new operator: A* pA = new A();
When we use thenew operator,the steps are as follows:
Step1: call operator newto allocate the memory as big as sizeof(A).
Step2: call the constructor A() toinitialize the attributes belonged to A.
Step3: return the pointer pA, which pointes to the object ofthis memory.
delete operator: deletepA;
When we usethe deleteoperator, the steps are as follows:
Step1: call the destructor ~A()todeal with the attribute store in this memory.
Step2: call operator deletetorelease this memory.
new[] operator: A* pAa = new A[N];
When we usenew[] operator, the steps are as follows:
Step 1: call operator new[]to allocate the memory as bigas N*sizeof(A)+4, the size N of the array is stored from (Address-4) to Address.
Step2: call Ntimes constructorA()of A to initialize the attributesbelonged to A.
Step3: return thepointer pAa,which points toAddress.
delete[] operator: delete []pAa;
When we use delete [] operator,the steps are as follows:
Step1: get the number which is needed to destruct from (Address-4)toAddress, and call N timesdestructor ~A()to deal with the attributes stored in the memory.
Step2: call operator delete []torelease this memory, which started with(Address -4).