compiler – is the relocatable machine code essentially the text segment of the virtual address?

Sorry if this is a basic question, I’m studying for my operating systems class and compiler theory class at the same time and this is confusing me. From what I do understand, virtual memory is larger than RAM and the virtual memory of a process looks like this:

(stack)(heap)(uninitialized data segment)(initialized data)(text segment)

where the text segment basically contains the code that needs to be run. Anything that the CPU needs from the virtual address will be loaded into the RAM when needed.

And the relocatable machine code is code that can be ran from any address. Does this mean it can be pretty much anythere in the virtual address (if that address is not already used by another section)?

Thanks