ASLR randomizes where various areas of memory (eg. stack, heap, libs, etc) are mapped in the address space of a process. Combined with complementary mitigation techniques such as non-executable memory protection (NX, XN, DEP, W%%%X, whatever you want to call it), ASLR makes the exploitation of traditional memory corruption vulnerabilities probabilistically difficult. ASLR is commonly an all-or-nothing proposition. If ASLR isn t applied to all areas in a process, its effectiveness is often nullified.
Source: https://threatpost.com/analyzing-aslr-android-ice-cream-sandwich-40-022112/76239/

