溢出是C语言所固有的缺陷,它既不检查数组边界,也不检查数据类型的可靠性。最常见的溢出有数组溢出、数溢出、指针溢出、栈溢出、堆溢出等缓冲区溢出。导致各种溢出的主要原因是程序中没有仔细检查用户输入,由于缓冲区溢出而使得相邻有用的存储单元被改写,往往会引发不可预料的后果。其一程序崩溃,导致拒绝服务;其二跳转并且执行攻击者事先准备的一段恶意代码,使程序转而执行其他指令,以达到攻击的目的。因此要在编程中加以防范,避免漏洞。