A heap overflow is the same thing as a buffer overflow occurring in the heap data area. Memory on the heap is dynamically allocated by the application at run-time and typically contains program data.

Heap overflows are sometimes used by crackerss to exploit badly written software. The technique is quite simple; if an application copies data without first checking to see it fits into the target destination, the cracker could supply the application with piece of data that is too large, and thus overwrite variables near the destination.

See also: shellcode