code: def _new_alloc_handle(shape, ctx, delay_alloc, dtype=mx_real_t):
      
      hdl = NDArrayHandle()
      check_call(_LIB.MXNDArrayCreateEx(
          c_array_buf(mx_uint, native_array('I', shape)),
          mx_uint(len(shape)),
          ctypes.c_int(ctx.device_typeid),
          ctypes.c_int(ctx.device_id),
          ctypes.c_int(int(delay_alloc)),
          ctypes.c_int(int(_DTYPE_NP_TO_MX[np.dtype(dtype).type])),
          ctypes.byref(hdl)))
      return hdl
docs: Return a new handle with specified shape and context.
  
      Empty handle is only used to hold results.
  
      Returns
      -------
      handle
          A new empty `NDArray` handle.