while allocate