mem = (*__malloc_hook)(sz, __builtin_return_address (0));
mem = (*__malloc_hook)(sz, RETURN_ADDRESS (0));
Void_t* cALLOc(size_t n, size_t elem_size)#elseVoid_t* cALLOc(n, elem_size) size_t n; size_t elem_size;#endif{  arena *ar_ptr;  mchunkptr p, oldtop;  INTERNAL_SIZE_T sz, csz, oldtopsize;  Void_t* mem;#if defined _LIBC || defined MALLOC_HOOKS  if (__malloc_hook != NULL) {    sz = n * elem_size;#if defined __GNUC__ && __GNUC__ >= 2    mem = (*__malloc_hook)(sz, __builtin_return_address (0));#else    mem = (*__malloc_hook)(sz, NULL);#endif    if(mem == 0)      return 0;#ifdef HAVE_MEMSET    return memset(mem, 0, sz);#else    while(sz > 0) ((char*)mem)[--sz] = 0; /* rather inefficient */    return mem;#endif  }#endif  if(request2size(n * elem_size, sz))    return 0;  arena_get(ar_ptr, sz);  if(!ar_ptr)    return 0;  /* Check if expand_top called, in which case there may be     no need to clear. */#if MORECORE_CLEARS  oldtop = top(ar_ptr);  oldtopsize = chunksize(top(ar_ptr));#if MORECORE_CLEARS < 2  /* Only newly allocated memory is guaranteed to be cleared.  */  if (ar_ptr == &main_arena &&      oldtopsize < sbrk_base + max_sbrked_mem - (char *)oldtop)    oldtopsize = (sbrk_base + max_sbrked_mem - (char *)oldtop);#endif#endif  p = chunk_alloc (ar_ptr, sz);  /* Only clearing follows, so we can unlock early. */  (void)mutex_unlock(&ar_ptr->mutex);  if (p == 0) {    /* Maybe the failure is due to running out of mmapped areas. */    if(ar_ptr != &main_arena) {      (void)mutex_lock(&main_arena.mutex);      p = chunk_alloc(&main_arena, sz);      (void)mutex_unlock(&main_arena.mutex);    } else {#if USE_ARENAS      /* ... or sbrk() has failed and there is still a chance to mmap() */      (void)mutex_lock(&main_arena.mutex);      ar_ptr = arena_get2(ar_ptr->next ? ar_ptr : 0, sz);      (void)mutex_unlock(&main_arena.mutex);      if(ar_ptr) {        p = chunk_alloc(ar_ptr, sz);        (void)mutex_unlock(&ar_ptr->mutex);      }#endif    }    if (p == 0) return 0;  }  mem = chunk2mem(p);  /* Two optional cases in which clearing not necessary */#if HAVE_MMAP  if (chunk_is_mmapped(p)) return mem;#endif  csz = chunksize(p);#if MORECORE_CLEARS  if (p == oldtop && csz > oldtopsize) {    /* clear only the bytes from non-freshly-sbrked memory */    csz = oldtopsize;  }#endif  MALLOC_ZERO(mem, csz - SIZE_SZ);  return mem;}