Project1
标题:
关于@
[打印本页]
作者:
dongzi416
时间:
2013-10-26 19:54
标题:
关于@
我到现在还是不能理解实例变量的具体应用方式
可不可以这么理解,实例变量就是可在一个类内任意调用的变量,而局部变量是在一个定义内任意调用的变量,而
$则是在所有类内都可以调用的变量?
作者:
yagami
时间:
2013-10-26 21:24
本帖最后由 yagami 于 2013-10-26 21:25 编辑
内存布局 其中有3块 栈 堆 全局区
类的实例 也可说对象 一般都是new出来的(在C里有些时候是直接在栈里生成的 不用new) 这时这个对象内存所在区域就是堆 堆一般是由程序员自由分配的区域 RUBY有内存回收机制 但是你完全可以不依赖这机制 手动释放内存 @的变量 作为实例的实变量 也可以说是成员变量 当然和类的实例一样存放在堆里 这个变量的生命周期 也就是实例的周期 当实例被销毁时 这个变量也就被回收了
局部变量 一般都在栈里 栈的特点 先进后出 紧密排列 高效 局部变量 一般在函数里生成 当函数结束时 也就被销毁了
11.jpg
(11.51 KB, 下载次数: 17)
下载附件
保存到相册
2013-10-26 21:25 上传
我定义了个 xxx函数 当调用该函数时先生成a 放到栈里 在生成b 放在a的上面
等函数结束时 回收局部变量 因为在栈里 先回收b 再回收a 先进后出原则
至于全局变量 放在全局区 生命周期 是整个程序运行时 当程序结束才回收
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1