C++ new/delete 与 new[]/delete[] 详情

来源:互联网 发布:等距抽样的算法 编辑:程序博客网 时间:2024/06/11 17:15

 

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 sizeN 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 callN timesdestructor ~A()to deal with the attributes stored in the memory.

Step2: call operator delete []torelease this memory, which started with(Address -4).


0 0
原创粉丝点击