栈溢出的经典代码
一個(gè)棧溢出的經(jīng)典代碼
?
#include <stdio.h>
#include <string.h>
void overflow(char* buf)
{
?char des[5]="";
?strcpy(des,buf);
?return;
}
void main()
{
?char longbuf[100]="aaaaaabbbbbccccc";
?overflow(longbuf);
??? return;
}
?
?
longbuf里有15個(gè)字符,而des只能容納5個(gè)字符,所以這就會(huì)產(chǎn)生緩沖區(qū)溢出。正是因?yàn)橄确湃霔@锏牡刂吩谇?#xff0c;而后進(jìn)入棧的數(shù)據(jù)一旦很長,就會(huì)覆蓋到前面的地址,這就會(huì)導(dǎo)致程序發(fā)生錯(cuò)誤。
?
?
?
??
總結(jié)
- 上一篇: 函数在内存中的具体执行
- 下一篇: 字符数据类型转换代码