为了账号安全,请及时绑定邮箱和手机立即绑定

为什么$james1=$james这个语句在程序结束的时候没有调用析构函数释放$james1占用的资源

为什么$james1=$james这个语句在程序结束的时候没有调用析构函数释放$james1占用的资源,虽然$james1没有调用构造函数,但他也是占用资源的啊

正在回答

1 回答

你没理解对。我猜你是看到打印“Destroying James”只打印了一次才会有这个疑问吧。不过重点可不是在这里,打印的这句话是写死了的,不管是对象$james1还是$james结束,打印的都是这句。重点是打印的次数怎么只有一次,视频里其实讲的很清楚了。


$james1=$james;//二者指向的是同一个对象(同一块内存),都是直接指向同一对象(同一块内存),所以程序结束的时候,只会释放一次资源。


另外:

$james2=&$james;//$james2相当于是间接指向对象,先指向$james,$james直接指向对象,而当$james=null之后,对象内存已释放,$james2找不到$james,自然找不到对象。

0 回复 有任何疑惑可以回复我~
#1

noo雅菲 提问者

按着你说的又看了一遍视频感觉理解了一点,谢谢啦~
2015-02-02 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么$james1=$james这个语句在程序结束的时候没有调用析构函数释放$james1占用的资源

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信