What? Of course a running application can write to the memory where the linked library is. They share the same process space.No, because on any sensible operating system, the running applications are not capable of writing to the memory that the shared library lives.
The reason the dll doesn't get corrupted is that when a new application loads a dll, the dll is loaded in that application's process space. The memory of a dll is not shared among the different processes UNLESS you explicity declare it that way with special compiler directives.