PHP面向对象1.2对象类型在内存中的分配

1.2 对象类型在内存中的分配

 对象类型和整型,字符串类型一样,也是PHP中的一种数据类型。都是在程序中用于存储不同类型数据使用的,在程序运行时它的每部分内容都要先加载到内存中再被使用。

1.1内存的结构

    逻辑上内存大体分为四段,分别为栈空间段、堆空间段、初始化数据段和代码段,程序中不同类型的声明将会被存放在不同的内存段中,其特点如下:
1.1.1 栈空间段
    栈的特点是空间小但被cpu访问的速度快,是用户存放程序中临时创建的变量,用于存取占用空间长度不变并且占用空间小的数据类型的内存段,例如整型1,100,1000等在内存中占用空间是等长的,占用空间都是32位4字节.还有double,boolean等都可以存储在栈空间段中。
1.1.2 堆空间段
    堆是用于存放进程运行中被动态分配的内存段,它大小并不固定,可动态扩张或缩减,用于存储数据长度可变或占用内存比较大的数据。例如,字符串、数组和对象就存储在这段内存中。
1.1.3 数据段
    数据段用来存放可执行文件中已初始化的全局变量,也就是存放程序静态分配的变量
1.1.4 代码段
    代码段用来存放可执行文件的操作指令,也就是说它是可执行程序在内存中的镜像。代码段需要防止在程序运行时被非法修改,所以只准许读操作,不允许写入(修改)操作。程序中的函数就存放在这段内存中。

1.2 对象类型的存储

对象类型的数据占用空间比较大,并且占用空间不定长。因此对象创建完成后存放于堆中,但是对象的引用名称是存放在栈中。在程序运行时,栈内存中的数据可以直接存取,而堆内存中的数据不可以直接存取,但是可以通过引用名称来访问 对象中的成员。对于前一个文章的例子Person类来说,用图形如下表示:
这里写图片描述

    "$person1 = new Person();"等号右边是创建真正对象实例,被存储在堆内存段中,等号左边则是对象的引用,被存储在栈内存段中。每个对象都有自己的内存空间,相互独立, 而且在每个空间中都存在有Person类中声明的成员。通过“=”把该对象在内存中的地址赋给了变量$person1,内存地址通常是使用十六进制数表示。变量$person1中的值将会存放在栈中。相当于$person1是一个指针指向堆中的对象。访问对象中的成员都要通过这个引用变量来完成,通常也可以把对象引用当成对象来看待。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值