栈溢出的经典代码
一個棧溢出的經典代碼
?
#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個字符,而des只能容納5個字符,所以這就會產生緩沖區(qū)溢出。正是因為先放入棧里的地址在前,而后進入棧的數(shù)據(jù)一旦很長,就會覆蓋到前面的地址,這就會導致程序發(fā)生錯誤。
?
?
?
??
總結
- 上一篇: 函数在内存中的具体执行
- 下一篇: 字符数据类型转换代码