#include <stdio.h>
#include <string.h>
int main(void)
{
char buff[8] = {0};
char *p = "012345678912345";
strcpy(buff,p);
printf("%s\n",buff);
return 0;
}
这是缓冲区溢出原理演示的基本C程序;
p所指向的字符串长度大于buff的长度,拷贝时发生缓冲区溢出;程序崩溃;
如果p指向字符串的长度不超过,就不会溢出;
对于Win32来说,使用Windows提供的Win32字符串函数,字符串拷贝使用lstrcpy;
#include <stdio.h>
#include <windows.h>
int main(void)
{
char buff[8] = {0};
char *p = "0123456789";
lstrcpy(buff,p);
printf("%s\n",buff);
return 0