缓冲区溢出:往程序的缓冲区写超出其长度的内容,也就是使用了申请之外的内存,会造成意想不到的结果。
来看一个很小的例子,这个例子来自这里:http://zhan.renren.com/ilovecrack?from=template
#include<stdio.h> void main() { int i=0; int a[]={1,2,3,4,5,6,7,8,9,10}; for(i=0;i<=10;i++) { a[i]=0; printf("Hello World!\n"); } }
i=0~10,a[10]越界了,它越界到了哪里呢?地址是从小往大增长的,没错,它越界到了i的地址空间。于是a[10]=0就是i=0,下次循环时,i=0,满足循环条件,于是循环继续进行着。每当i==10的时候,循环体里的语句都将把i置为0,于是循环将永无止境地进行下去。
原文地址:http://blog.csdn.net/hiboy_111/article/details/44310601