When a process terminates (via exit(2) or some exceptional circumstance) it communicates a status code to its parent.
The parent needs to use one of the wait(2) system calls to collect this status.
Until the parent collects this status, a process table entry remains for the now-defunct child to hold the status code; this entry is called a "zombie process".
Fortunately, zombies use no resources other than a process table slot, so typically don't become a problem unless they fill up the process table.