c++中什么叫内存的越界操作?举一个简单的例子说明一下

来源:百度知道 编辑:UC知道 时间:2024/05/29 21:28:22

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define FileName "MyFile"
int main(int argc,char* argv[])
{FILE *fd;
long diff;
char buffchar[100];
char *buf2=(char *)malloc(20);
char *buf1=(char *)malloc(20);

diff=(long)buf2-(long)buf1;
strcpy(buf2,FileName);

printf("---------信息显示1:-------\n\n");
printf("buf1存储地址:%p;\n",buf1);
printf("buf2存储地址:%p;存储内容为 文件名 %s ;\n",buf2,buf2);
printf("两地址距离:%d个字节;\n",diff);
printf("---------信息显示结束1:-------\n\n");

if(argc<2)
{printf("请输入要写入文件 %s 的字符串:\n",buf2);
gets(buffchar);
strcpy(buf1,buffchar); //此函数存在溢出漏洞.当buffchar的长度大于diff时, 会把buf2的内容覆盖掉
}
else
{
strcpy(buf1,argv[1]);
}
printf("---------信息显示2:-------\n\n");
printf(&quo