use zmalloc instead of malloc