现在的位置: 首页 > 综合 > 正文

体验缓冲区溢出

2019年04月24日 ⁄ 综合 ⁄ 共 373字 ⁄ 字号 评论关闭

缓冲区溢出:往程序的缓冲区写超出其长度的内容,也就是使用了申请之外的内存,会造成意想不到的结果。

来看一个很小的例子,这个例子来自这里: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,于是循环将永无止境地进行下去。

抱歉!评论已关闭.