C++随记
【以下内容为笔者日常学习中遇到的比较有意思的问题的记录】
局部变量的地址
现象描述:main函数中的局部变量每次运行地址不一样
解答:因为采用了ASLR,ASLR(Address space layout randomization)是一种针对缓冲区溢出的安全保护技术,通过对堆、栈、共享库映射等线性区布局的随机化,通过增加攻击者预测目的地址的难度,防止攻击者直接定位攻击代码位置,达到阻止溢出攻击的目的。
扩展:全局变量和函数的地址每次运行地址一样嘛?
答:一样,因为这些地址在编译期就已经确定了,不管运行多少次都不会改变。相同的编译器编译选项相同的情况下,多次编译后再执行的地址应该也是一样的,不同编译器和不同编译选项可能就不一样,因为可能存在各种优化。
作者:cherish.
出处:https://home.cnblogs.com/u/cherish-/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。