Each and every .exe file, .dll file, etc. in windows comes with a specific memory address that it has to be loaded at! If windows cannot load it at that address, it has to load the executable at the wrong address, and then go through the entire program looking for addresses that need to be changed! A hideous bodge! How could this fundamental sloppiness and inefficiency find its way into 90% of all computers?
Does this surprise you?