This macro allocates the memory for a new CPad.
The PAD_NEW() macro allocates memory by using the allocate() function, and can also be used to invoke constructors and destructors. PAD_NEW() invokes helper templates to ensure that allocate() and the related constructors are invoked appropriately.
PAD_NEW() can be used in array and non-array contexts as follows:
MyObject *pObj = PAD_NEW(pad, MyObject); char * pStr = PAD_NEW(pad, char);
The array style helps to properly support the calling of constructors when it allocates an array of objects that have a constructor.