- dereferencing NULL pointers,
- attempting to access memory the program does not have rights to (such as kernel structures in process context)
- attempting to access a nonexistent memory address (outside process's address space)
- attempting to write read-only memory (such as code segment),
- a buffer overflow,
- using uninitialized pointers.
(list copied from wiki)