A technique to make it harder to perform buffer overflow attack, which requires attacker to know the location of an executable in memory.
ASLR randomly selects the base address of the executable, it also randomizes the heap, stack and loaded libraries. Thus, in case an attacker can control the flow of execution (such as controlling the instruction pointer), the location of the arbitrary code to execute is unknown.