使用sprintf时溢出怎么会影响到变量的值?
大概从汇编层面了解下程序运行的原理吧
1.函数调用(main也是被编译器或是操作系统的某个方法调用的啦),每当调用一个函数是栈指针就会移动,分配函数内部定义局部变量所需的空间,就像你定义的俩buf,这俩buf的内存在release编译模式下是一般连续的,对其中一个的访问越界自然数据就会串到另外一个局部变量里了。
2.学习建议,不要搞什么编译原理,晦涩难懂,既然楼主能看反汇编,何不写个简单的demo,分析调试下变量的内存分布,函数调用时堆栈移动等等,其实也就那么回事没啥难的。
Copyright © 广州京杭网络科技有限公司 2005-2024 版权所有 粤ICP备16019765号
广州京杭网络科技有限公司 版权所有