如图 本人在fun()方法中定义了整形变量i 并返回它的地址值 接着在main()方法中输出了这个地址上的内容 结果正确 这个是为什么呢 是所谓的“即使变量生命周期结束了 它所存在的地址上存放的仍然是之前的变量值 但是i无法再引用这个值”了么
解决方案
10
fun() 结束时变量i 已经被系统回收,但是还没被再次利用(全部值还是i的值)!你在调用之后下个断点,然后随便打印一段话,你观察下内存 这时候在打印i的值 假如被利用了它就会是一堆垃圾数据!
10
其实电脑开机后物理内存的每个字节都是可读写的,从来不会原因是所谓的new、delete或malloc、free而被创建、销毁。区别仅在于操作系统内存管理模块在你读写时能否能发现并能否采取相应动作而已。操作系统管理内存的粒度不是字节而是页,一页通常为4KB。