_cmsICCPROFILE* Icc = (_cmsICCPROFILE*) _cmsMallocZero(ContextID, sizeof(_cmsICCPROFILE)); //這裡呼叫了_cmsMallocZero

##############################################################
// Generic allocate & zero
void* CMSEXPORT _cmsMallocZero(cmsContext ContextID, cmsUInt32Number size)
{    return MallocZeroPtr(ContextID, size);		}	
##############################################################
// Pointers to malloc and _cmsFree functions in current environment
static void * (* MallocZeroPtr)(cmsContext ContextID, cmsUInt32Number size)            = _cmsMallocZeroDefaultFn;
################
 if (Plugin ->MallocZeroPtr != NULL) MallocZeroPtr = Plugin ->MallocZeroPtr;
#####################
// Memory handler. Each new plug-in type replaces current behaviour
typedef struct {

        cmsPluginBase base;
....
        // Optional
        void * (* MallocZeroPtr)(cmsContext ContextID, cmsUInt32Number size);
....
} cmsPluginMemHandler;
########################
// Generic allocate & zero
static
void* _cmsMallocZeroDefaultFn(cmsContext ContextID, cmsUInt32Number size)
{
    void *pt = _cmsMalloc(ContextID, size);
    if (pt == NULL) return NULL;

    memset(pt, 0, size);
    return pt;
}

