首页 > 其他 > 详细

scanf函数的内存越界问题

时间:2014-02-09 23:03:00      阅读:423      评论:0      收藏:0      [点我收藏+]
scanf函数的参数部分要求对变量进行取地址,由此我们知道,我们对是这个变量所在的那块内存进行的操作,这里就会产生一个问题:内存越界:
1.如:
bubuko.com,布布扣
输入:
12345
结果:
bubuko.com,布布扣
从结果看当scanf以%s字符串格式输入超过数组a[5]范围时,会发生内存越界。这样a[5]里的数据不能看做字符串,因为不是以\0结尾的,这种内存越界发生时,会出现莫名其妙的程序运行结果。
2、%mc宽度内存越界测试程序
bubuko.com,布布扣
输入:
bubuko.com,布布扣
由此我们可以看出,scanf并没有把多余的字符丢掉,而是存储在连续的存储空间,至于为什么a[1]为5,那是因为5把之前赋予的1给覆盖掉了。

scanf函数的内存越界问题

原文:http://blog.csdn.net/u010236550/article/details/19014879

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!