当前位置: 首页 > news >正文

网站开发技术知识百度平台商家

网站开发技术知识,百度平台商家,营销型网站的建设,官网机票特价机票查询内存管理机制与内存映射相关。 一、C与C 之所以将C与C放在一起是因为C是C的超集; 但是C是面向过程语言,C是面向对象的语言; C与C都可以使用malloc、calloc、realloc来申请内存空间; 其中void* malloc(size_t size)是在内存的动态…

内存管理机制与内存映射相关。在这里插入图片描述

一、C与C++

之所以将C与C++放在一起是因为C++是C的超集;
但是C是面向过程语言,C++是面向对象的语言;
C与C++都可以使用malloc、calloc、realloc来申请内存空间;
其中void* malloc(size_t size)是在内存的动态存储区中分配一块长度为size字节的连续区域,参数size为需要内存空间的长度,返回该区域的首地址;
void* calloc(size_t num,size_t size)与malloc相似,不过函数calloc() 会将所分配的内存空间中的每一位都初始化为零;
void* realloc(void* p,size_t newsize)是给一个已经分配了地址的指针重新分配空间,可以做到对动态开辟内存大小的调整;
申请内存空间失败会返回NULL,用完后通过free释放;
C++相比C多了new&delete的函数,new在底层调用operator new全局函数来申请空间,delete在底层通过operator delete全局函数来释放空间,执行构造函数和析构函数是C++面向对象的特性;

二、Objective-C与Swift

iOS通过引用计数和自动释放池来进行内存管理,通常引用计数存储在对象的成员isa_t里的extra_rc中,在__arm64__环境下,extra_rc在内存中占19位,在__x86_64__环境下,占8位;
以__x86_64__环境为例,extra_rc大小总共8bit,最多存放2^7量级的数值,所以当extra_rc达到最大值需要通过另外的结构来存储引用计数;
App全局会维护一个SideTables,里面包含多个SideTable,可以通过对象的hash运算找到对应的SideTable,一个SideTable对应多个对象,里面有一个引用计数表和弱引用计数表;
再次对对象hash运算可以从SideTable中的refcnts中获取对象的引用计数;
weak_table中保存weak_entries,从weak_entries中通过对象查找某对象的弱引用信息weak_entry_t,weak_entry_t内保存着弱引用该对象的指针地址的hash数组;
当弱引用一个对象时,会通过obj从SideTables找到SideTable,找到SideTable中的弱引用表weak_table,通过obj从weak_table中的weak_entries找到obj对应的weak_entry_t,在obj对应的weak_entry_t的weak_referrer_t中加入弱引用obj的指针;
当对象释放时,会通过obj从SideTables找到SideTable,找到SideTable中的弱引用表weak_table,通过obj从weak_table中的weak_entries找到obj对应的weak_entry_t,查找weak_entry_t中的weak_referrer_t数组,并将weak_referrer_t中存储的指针指向nil;
每当有一个新的强引用指针指向,对象的引用计数就会+1,当减少一个强引用指针,引用计数就会-1,当引用计数为0时,对象就会被销毁;
对于自动释放池(@autoreleasepool),是一个双向链表结构,出栈入栈都是从栈顶开始;
objc_autoreleasePoolPush操作对应批量次的AutoReleasePoolPage::push(),会把pool中的对象全部压入栈结构;
objc_autoreleasePoolPop操作对应批量次的AutoReleasePoolPage::pop(),表示出栈,会依次给对象发送release消息,释放过程在pool自身对应的线程中进行;
栈有最大限额,超过后会新建一个栈节点添加到pool,新的对象会存入新栈;
当RunLoop即将进入休眠会销毁old pool同时释放pool中的对象,新建new pool;
主线程会自动创建RunLoop,子线程需要通过获取才会创建,RunLoop的作用是保活和任务处理。

不论是java还是dart都有对应的引用计数来进行内存管理机制,js的内存管理更像C++一样简陋。

http://www.dt0577.cn/news/17415.html

相关文章:

  • 中英文双版网站怎么做制作网站推广
  • 菏泽 兼职做网站百度推广首页
  • 网站运营与数据分析互联网论坛
  • 有没有专门招代理的网站观看b站的广告网站平台
  • 政府网站设计什么是电商?电商怎么做
  • 做老师好还是网站编辑好淘宝宝贝排名查询
  • 历下区网站建设公司福州百度网站排名优化
  • 微信平台开发技术seo手机端优化
  • wordpress修改页面固定连接优化设计六年级上册语文答案
  • 企业网站鉴赏友情链接价格
  • 太原做网站南宁百度seo
  • 枣庄房产网网站推广优化教程
  • 做网站p图工具优化绿松石什么意思
  • 企业没有网站怎么做seo优化搜索关键词排名
  • onethink 网站小程序开发模板
  • 拖拽式制作网站新闻媒体发稿平台
  • c#网站开发技术视频号直播推广二维码
  • 日本电商网站百度快速收录教程
  • 惠州企业网站seo公司武汉今日头条最新消息
  • 天津建设工程注册中心网站青岛网站制作推广
  • 网站网页建设论文百度竞价排名事件
  • 主播网站怎么建立网站推广和优化系统
  • 做网站用的图片分辨率制作公司网站的公司
  • 个人网站取域名企业seo自助建站系统
  • wordpress怎么pjaxwin7优化大师官方网站
  • 产品设计网站制作站长seo软件
  • 国外设计网站app有哪些友链是什么
  • 门店到什么地步可以做网站百度查询网
  • 女孩子做电商运营是不是压力很大seo优化公司
  • 做网站竞价还需要推广公司百度seo官网