免费注册 查看新帖 |

Chinaunix

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

指针不应该只包含类型和地址,还包括指向的内存大小。  关闭 [复制链接]

论坛徽章:
0
51 [报告]
发表于 2010-10-09 14:29 |只看该作者
本帖最后由 hobbs136 于 2010-10-09 14:34 编辑

我记得在代码段有符号表来记录变量名称,类型,作用域,是否指针之类的,这些在编译时都是确定的,还有变量在内存中的地址都是固定的,一个地址就是一个右值,当把一个变量当作右值使用时,实际上要先找到这个变量所在位置,然后再找到这个变量所代表的值。似乎就是这样的。

做技术不刨根究底不行,没有耐心也不行.

论坛徽章:
0
52 [报告]
发表于 2010-10-09 14:33 |只看该作者
成口水了

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
53 [报告]
发表于 2010-10-09 14:59 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
54 [报告]
发表于 2010-10-09 15:06 |只看该作者
楼主要是能看汇编,看看就懂了……

论坛徽章:
89
水瓶座
日期:2014-04-01 08:53:31天蝎座
日期:2014-04-01 08:53:53天秤座
日期:2014-04-01 08:54:02射手座
日期:2014-04-01 08:54:15子鼠
日期:2014-04-01 08:55:35辰龙
日期:2014-04-01 08:56:36未羊
日期:2014-04-01 08:56:27戌狗
日期:2014-04-01 08:56:13亥猪
日期:2014-04-01 08:56:02亥猪
日期:2014-04-08 08:38:58程序设计版块每日发帖之星
日期:2016-01-05 06:20:00程序设计版块每日发帖之星
日期:2016-01-07 06:20:00
55 [报告]
发表于 2010-10-09 15:12 |只看该作者
楼主要是能看汇编,看看就懂了……
狗气球 发表于 2010-10-09 15:06



    指点一下了,怎么看呢?

论坛徽章:
89
水瓶座
日期:2014-04-01 08:53:31天蝎座
日期:2014-04-01 08:53:53天秤座
日期:2014-04-01 08:54:02射手座
日期:2014-04-01 08:54:15子鼠
日期:2014-04-01 08:55:35辰龙
日期:2014-04-01 08:56:36未羊
日期:2014-04-01 08:56:27戌狗
日期:2014-04-01 08:56:13亥猪
日期:2014-04-01 08:56:02亥猪
日期:2014-04-08 08:38:58程序设计版块每日发帖之星
日期:2016-01-05 06:20:00程序设计版块每日发帖之星
日期:2016-01-07 06:20:00
56 [报告]
发表于 2010-10-09 15:14 |只看该作者
我都想去看free的代码了。

论坛徽章:
89
水瓶座
日期:2014-04-01 08:53:31天蝎座
日期:2014-04-01 08:53:53天秤座
日期:2014-04-01 08:54:02射手座
日期:2014-04-01 08:54:15子鼠
日期:2014-04-01 08:55:35辰龙
日期:2014-04-01 08:56:36未羊
日期:2014-04-01 08:56:27戌狗
日期:2014-04-01 08:56:13亥猪
日期:2014-04-01 08:56:02亥猪
日期:2014-04-08 08:38:58程序设计版块每日发帖之星
日期:2016-01-05 06:20:00程序设计版块每日发帖之星
日期:2016-01-07 06:20:00
57 [报告]
发表于 2010-10-09 15:15 |只看该作者
只要是有什么问题我感觉有点不清楚,我就很难受。

论坛徽章:
0
58 [报告]
发表于 2010-10-09 15:15 |只看该作者
楼主说的不对。
指针本身不包含对象大小信息。

malloc的对象大小信息是在对象的数据结构中的。而非在指针中。
该结构随着不同的malloc/free实现不同而不同。比如一种实现是分配的各个内存做成链表,而大小信息在p-N中。

论坛徽章:
0
59 [报告]
发表于 2010-10-09 15:17 |只看该作者
本帖最后由 狗气球 于 2010-10-09 15:19 编辑
指点一下了,怎么看呢?
fender0107401 发表于 2010-10-09 15:12



    指针体现在汇编层次上也就是地址。
    然而这个地址是啥呢。如果说是字节的编号,从这个字节开始,到底有多大?
    这个就只有编译器知道了。你说它是指向什么结构的指针,它所对应的内存字节数就是sizeof 结构那么多。

    至于malloc/free是另一个问题。要看malloc/free的具体实现。

论坛徽章:
89
水瓶座
日期:2014-04-01 08:53:31天蝎座
日期:2014-04-01 08:53:53天秤座
日期:2014-04-01 08:54:02射手座
日期:2014-04-01 08:54:15子鼠
日期:2014-04-01 08:55:35辰龙
日期:2014-04-01 08:56:36未羊
日期:2014-04-01 08:56:27戌狗
日期:2014-04-01 08:56:13亥猪
日期:2014-04-01 08:56:02亥猪
日期:2014-04-08 08:38:58程序设计版块每日发帖之星
日期:2016-01-05 06:20:00程序设计版块每日发帖之星
日期:2016-01-07 06:20:00
60 [报告]
发表于 2010-10-09 15:27 |只看该作者
楼主说的不对。
指针本身不包含对象大小信息。

malloc的对象大小信息是在对象的数据结构中的。而非在指 ...
思一克 发表于 2010-10-09 15:15


也就是说指针只是保存了那个对象的地址,

而malloc/free只是根据指针里面保存的地址去操作那个对象对应的内存空间,那么对象的数据架构应该包含了对象所占用的内存大小之类的信息了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP