int i=10; printf("Address of i = %u",&i); Output: Address if i = 3220204848 Output on re-execution: Address of i = 3216532594
每次执行程序时, i
都会得到一个新的地址。 这意味着什么?
它表示每次运行程序时都会加载一个不同的(虚拟)地址。 这是一种称为地址空间布局随机化(ASLR)的function,是大多数现代操作系统的一项function。
这就是操作系统的工作方式。 当你声明一个变量时,你要求底层系统分配一个内存块(地址)来存储那些数据(或者如果你正在处理指针那么指向另一个块的指针,但是这里你有一个原语,所以它只是存储数据)。 程序并不关心内存的位置,只关系它存在,因为它知道如何跟踪它所给出的内容。
作为程序员,除非你做一些令人难以置信的低级工作,否则这真的不是什么大不了的事。 对大多数人来说,最难掌握的是,当你使用指针时,你不能用与原语相同的方式来区分事物,因为指针会考虑它们的值(当使用==作为赤道时)他们的记忆地址。
在c程序执行时,另一个进程正在运行。再次执行代码时,您将分配新地址,之前分配的地址将分配给另一个进程。
以上就是c/c++开发分享为什么在C中每次执行后变量的地址都会发生变化?相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/541753.html