make slice support dynamic alloc