Buenas!
Tengo entendido que en Windows, en lo que respecta a los ejecutables en formato PE, la ImageBase suele ser 4000000h y a partir de ahí se cargan en memoria.
En las DLL puede ocurrir que cuando tu programa intenta cargar una, y esta intenta cargarse desde la ImageBase especificada en su Header, esta parte de la memoria ya esté ocupada, y de ahí surge el tema de las relocaciones de las DLL.
La pregunta es... ¿cómo es que la ImageBase de los ejecutables siempre hace referencia a una zona de memoria libre?
Si todos los programas se cargan a partir de esa dirección, debería de estar ocupada si hay unos cuantos cargados en memoria.
Todo esto es lo que me pareció entender... si me equivoco en todo lo que digo corregidme por favor
Gracias a todos.