返回顶部

C++随记

【以下内容为笔者日常学习中遇到的比较有意思的问题的记录】

局部变量的地址

现象描述:main函数中的局部变量每次运行地址不一样

解答:因为采用了ASLR,ASLR(Address space layout randomization)是一种针对缓冲区溢出的安全保护技术,通过对堆、栈、共享库映射等线性区布局的随机化,通过增加攻击者预测目的地址的难度,防止攻击者直接定位攻击代码位置,达到阻止溢出攻击的目的。

扩展:全局变量和函数的地址每次运行地址一样嘛?

答:一样,因为这些地址在编译期就已经确定了,不管运行多少次都不会改变。相同的编译器编译选项相同的情况下,多次编译后再执行的地址应该也是一样的,不同编译器和不同编译选项可能就不一样,因为可能存在各种优化。

posted @ 2022-09-12 16:28  cherish-lgb  阅读(28)  评论(0编辑  收藏  举报