When you allocate a block of virtual memory, _vmalloc does not return a pointer the way malloc does. Instead, _vmalloc returns a handle, which is a value of type _vmhnd_t that uniquely identifies the block of virtual memory. You cannot use such a handle to access memory directly, nor can you perform address arithmetic on a handle. You can only pass a handle to other virtual memory functions.
In order to access the contents of a virtual memory block, you must either load it or lock it into DOS memory.