设为首页
收藏本站
开启辅助访问
切换到窄版
登录
立即注册
中问网首页
我的收藏
站长博客
搜索
搜索
本版
帖子
用户
第一问答网
»
论坛
›
中问网
›
问答
›
这段代码好奇怪
返回列表
发新帖
这段代码好奇怪
[复制链接]
11
|
1
|
2008-7-30 14:28:36
|
显示全部楼层
|
阅读模式
#include
#include "string.h"
int main()
{
int ret;
char hehe[1024];
char buffer[10];
scanf("%s",hehe);
strcpy(buffer,hehe);
printf("%s\n",buffer);
return 1;
}
这段代码明显存在溢出嘛,我输入超过九个字符就会溢出啊,可是结果却没有溢出,完整的输出了我的输入,这是怎么回事?
回复
使用道具
举报
千问
|
2008-7-30 14:28:36
|
显示全部楼层
这就是c为什么是不安全型的原因buffer相当于一个字符指针,就是一个地址strcpy函数从这个地址开始往里拷贝字符,直到\0位置,既便字符串已经超出了buffer声明的10个字节也就是说字符串的后半部已经属于非法内存了但是print一个字符串的算法也是从字符串首地址开始读,直到\0为止.那么只要超出buffer[10]这块地址的部分不被其他应用覆盖,字符串输出结果还是对的.更可怕的是如果溢出这部分正好是别的程序的空间,就麻烦了.不禁想起:出轨并不可怕,可怕的是出轨时刚好被撞到:)
回复
使用道具
举报
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
千问
主题
0
回帖
4882万
积分
论坛元老
论坛元老, 积分 48824836, 距离下一级还需 -38824837 积分
论坛元老, 积分 48824836, 距离下一级还需 -38824837 积分
积分
48824836
加好友
发消息
回复楼主
返回列表
问答
热门排行