关于scanf的问题

loveqise 2016-09-28 05:15:18
为什么以下程序都能正常运行!不会溢出数组吗
...全文
221 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2016-09-29
  • 打赏
  • 举报
回复
其实电脑开机后物理内存的每个字节都是可读写的,从来不会因为所谓的new、delete或malloc、free而被创建、销毁。区别仅在于操作系统内存管理模块在你读写时是否能发现并是否采取相应动作而已。操作系统管理内存的粒度不是字节而是页,一页通常为4KB。
paschen 2016-09-28
  • 打赏
  • 举报
回复
引用 3 楼 loveqise的回复:
引用 1楼paschen 的回复:
显然越界了,不要用不出错来证明是对的
重要的是num 20我没有初始化,按照正常来说应该指向一个未知区域,数值未知。可是每次程序运行都正常,正好点击我输入的第二十一个字母
因为你的输入把不属于你的内存给覆盖了
loveqise 2016-09-28
  • 打赏
  • 举报
回复
引用 2楼小灸舞 的回复:
越界并不等于程序崩溃。
如果你越界写入的地方并没有重要信息或者被别的变量占用,一般程序是不会崩溃的。
重要的是num 20我没有初始化,按照正常来说应该指向一个未知区域,数值未知。可是每次程序运行都正常,正好是我输入的第二十一个字母
loveqise 2016-09-28
  • 打赏
  • 举报
回复
引用 1楼paschen 的回复:
显然越界了,不要用不出错来证明是对的
重要的是num 20我没有初始化,按照正常来说应该指向一个未知区域,数值未知。可是每次程序运行都正常,正好点击我输入的第二十一个字母
小灸舞 版主 2016-09-28
  • 打赏
  • 举报
回复
越界并不等于程序崩溃。
如果你越界写入的地方并没有重要信息或者被别的变量占用,一般程序是不会崩溃的。
paschen 2016-09-28
  • 打赏
  • 举报
回复
显然越界了,不要用不出错来证明是对的

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧