免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: toniz
打印 上一主题 下一主题

PERL深入探讨--内存管理[1]【原创】 [复制链接]

论坛徽章:
0
41 [报告]
发表于 2011-05-28 08:03 |只看该作者
如果每个帖都这么用心就好了。

论坛徽章:
0
42 [报告]
发表于 2011-05-29 17:04 |只看该作者
回复 42# telecomshy


    perl内部对标量变量,数组,哈希的实现都是用类似数据结构。简单的说,包含一个HEAD和一个BODY。HEAD含有指向BODY的指针,一个引用计数,还有一个标记。BODY的实现复杂很多,包括IV,NV还有很多其他结果,如IO,MAGIC等。

    数组的BODY结构包含一个记录数组的第一个元素地址的指针,数组长度等。。。。查的时候就用通过前面两个定位到指向的标量标量的HEAD。然后取他的值。如果是从数组中删除一个元素,也是直接减去对应变量的引用计数。


    这个我还在整理。可能用图说明比较好看懂。

论坛徽章:
78
双子座
日期:2013-10-15 08:50:09天秤座
日期:2013-10-16 18:02:08白羊座
日期:2013-10-18 13:35:33天蝎座
日期:2013-10-18 13:37:06狮子座
日期:2013-10-18 13:40:31双子座
日期:2013-10-22 13:58:42戌狗
日期:2013-10-22 18:50:04CU十二周年纪念徽章
日期:2013-10-24 15:41:34巨蟹座
日期:2013-10-24 17:14:56处女座
日期:2013-10-24 17:15:30双子座
日期:2013-10-25 13:49:39午马
日期:2013-10-28 15:02:15
43 [报告]
发表于 2011-06-11 15:08 |只看该作者
好多例子在我机器上结果都不一样。。。最后一个例子为:
0121edc 1
0121edc 2
Segmentation Fault (core dumped)

论坛徽章:
0
44 [报告]
发表于 2011-06-11 15:42 |只看该作者
犀利啊~~~~~~

论坛徽章:
0
45 [报告]
发表于 2011-06-13 09:49 |只看该作者
回复 45# yybmsrs


     这个是因为地址转换不对,读取到非法地址导致段错误。

     你可以试试逆推一下。查下自己系统是不是 little-ending的。然后可以随意定义一个变量, 用pack和Dump打印出来,校对一下地址的转换情况。

论坛徽章:
0
46 [报告]
发表于 2011-08-23 11:57 |只看该作者
很好很强大!

论坛徽章:
0
47 [报告]
发表于 2012-01-22 13:40 |只看该作者
讲得太精彩了,可惜还没看懂~哎,要加油学习Perl了~

论坛徽章:
46
15-16赛季CBA联赛之四川
日期:2018-03-27 11:59:132015年亚洲杯之沙特阿拉伯
日期:2015-04-11 17:31:45天蝎座
日期:2015-03-25 16:56:49双鱼座
日期:2015-03-25 16:56:30摩羯座
日期:2015-03-25 16:56:09巳蛇
日期:2015-03-25 16:55:30卯兔
日期:2015-03-25 16:54:29子鼠
日期:2015-03-25 16:53:59申猴
日期:2015-03-25 16:53:29寅虎
日期:2015-03-25 16:52:29羊年新春福章
日期:2015-03-25 16:51:212015亚冠之布里斯班狮吼
日期:2015-07-13 10:44:56
48 [报告]
发表于 2012-01-23 17:47 |只看该作者
linking1987 发表于 2012-01-22 13:40
讲得太精彩了,可惜还没看懂~哎,要加油学习Perl了~


看不懂怎么能评价讲的精彩?伪科学看着也是相当高深,高深到看不懂的

论坛徽章:
0
49 [报告]
发表于 2012-01-23 17:57 |只看该作者
回复 50# zhlong8


    呵呵,楼主的逻辑还有表示都是挺清楚,连我这菜鸟都能看懂30%,所以说讲得精彩不为过,另外不是很懂,是局限于本人对Perl的掌握尚且处于菜鸟级别~
刚好刚刚遇到一个问题,随便请问一下版主,Perl的scalar变量类型能否指定其所占内存的大小?

论坛徽章:
46
15-16赛季CBA联赛之四川
日期:2018-03-27 11:59:132015年亚洲杯之沙特阿拉伯
日期:2015-04-11 17:31:45天蝎座
日期:2015-03-25 16:56:49双鱼座
日期:2015-03-25 16:56:30摩羯座
日期:2015-03-25 16:56:09巳蛇
日期:2015-03-25 16:55:30卯兔
日期:2015-03-25 16:54:29子鼠
日期:2015-03-25 16:53:59申猴
日期:2015-03-25 16:53:29寅虎
日期:2015-03-25 16:52:29羊年新春福章
日期:2015-03-25 16:51:212015亚冠之布里斯班狮吼
日期:2015-07-13 10:44:56
50 [报告]
发表于 2012-01-23 21:46 |只看该作者
linking1987 发表于 2012-01-23 17:57
回复 50# zhlong8


除了字符串部分占用的内存,scalar 都是定长的结构体指定不了,除非你通过 typemap 定义自己的数据类型。有个 Devel::Size 可以查看一个值占用的实际内存大小
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP