计算机程序一般都会使用到一些内存,这些内存会提供给程序内部使用,或者是存放用户的输入数据,这样的内存一般称作缓冲区。 溢出是指盛放的内容超出容器容量而溢出,在计算机程序中,就是数据使用到了被分配好的内存空间之外的内存空间。
缓冲区溢出,简单来说就是,计算机对接收的输入数据没有进行有效的检测(理想的情况是程序检查数据长度并且不允许输入超过缓冲区长度的字符),向缓冲区内填充数据时超过了缓冲区本身的容量,而导致数据溢出到被分配空间之外的内存空间,使得溢出的数据覆盖了其他内存空间的数据。
栈溢出是缓冲区溢出中最为常见的一种。只不过栈溢出发生在栈上,而堆溢出发生在堆上,其实他们的原理都是一样的。