gets()函数的危险操作
分别在window环境和Linux环境中分析
1)window环境
采用visual studio2017实验:
结果:window中直接报错,终止运行。
2)Linux环境
结果:输入超过定义长度的字符串,gets()函数可以接收、输出,并且检测到堆栈应被破坏
原理分析:
当输入的字符串超过了定义的变量后,多出的数据会存入申请地址之后的地址,覆盖掉了内存中原有的数据,因此会对其他数据造成未知的破坏。
如果覆盖到了系统定义的数据,则会直接报错,不能实现覆盖的操作。