缓冲区溢出:往程序的缓冲区写超出其长度的内容,也就是使用了申请之外的内存,会造成意想不到的结果。
来看一个很小的例子,这个例子来自这里: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,满......
阅读全文