An access violation occurs when a program attempts to access a memory location that it is not permitted to access, often leading to a crash or undefined behavior. This is commonly caused by dereferencing a null or invalid pointer, buffer overflows, or improper memory management in software applications.