result = (*__memalign_hook)(alignment, bytes, __builtin_return_address (0));
result = (*__memalign_hook)(alignment, bytes, RETURN_ADDRESS (0));
Void_t* mEMALIGn(size_t alignment, size_t bytes)#elseVoid_t* mEMALIGn(alignment, bytes) size_t alignment; size_t bytes;#endif{  arena *ar_ptr;  INTERNAL_SIZE_T    nb;      /* padded  request size */  mchunkptr p;#if defined _LIBC || defined MALLOC_HOOKS  if (__memalign_hook != NULL) {    Void_t* result;#if defined __GNUC__ && __GNUC__ >= 2    result = (*__memalign_hook)(alignment, bytes,				__builtin_return_address (0));#else    result = (*__memalign_hook)(alignment, bytes, NULL);#endif    return result;  }#endif  /* If need less alignment than we give anyway, just relay to malloc */  if (alignment <= MALLOC_ALIGNMENT) return mALLOc(bytes);  /* Otherwise, ensure that it is at least a minimum chunk size */  if (alignment <  MINSIZE) alignment = MINSIZE;  if(request2size(bytes, nb))    return 0;  arena_get(ar_ptr, nb + alignment + MINSIZE);  if(!ar_ptr)    return 0;  p = chunk_align(ar_ptr, nb, alignment);  (void)mutex_unlock(&ar_ptr->mutex);  if(!p) {    /* Maybe the failure is due to running out of mmapped areas. */    if(ar_ptr != &main_arena) {      (void)mutex_lock(&main_arena.mutex);      p = chunk_align(&main_arena, nb, alignment);      (void)mutex_unlock(&main_arena.mutex);    } else {#if USE_ARENAS      /* ... or sbrk() has failed and there is still a chance to mmap() */      ar_ptr = arena_get2(ar_ptr->next ? ar_ptr : 0, nb);      if(ar_ptr) {        p = chunk_align(ar_ptr, nb, alignment);        (void)mutex_unlock(&ar_ptr->mutex);      }#endif    }    if(!p) return 0;  }  return chunk2mem(p);}