免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2408 | 回复: 7
打印 上一主题 下一主题

[函数] 请教malloc函数前面是什么东西 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-04-24 11:33 |只看该作者 |倒序浏览
这个函数 的前面老是加有指针类型的东东,比如(struct student *)malloc(len),函数名的前面到底是什么东东?!!怪哦~~~~~~~~~~

论坛徽章:
0
2 [报告]
发表于 2003-04-24 11:56 |只看该作者

请教malloc函数前面是什么东西

强制类型转换,
让runtime知道是什么东西。
否则就是 (void *)。

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
3 [报告]
发表于 2003-04-24 11:58 |只看该作者

请教malloc函数前面是什么东西

为了兼容性的考虑,标准C规定,malloc,realloc,calloc等这些函数统一返回void *,但在程序中做类型转化,是为了让分配的地址空间与要存储的数据保持一致性。

论坛徽章:
0
4 [报告]
发表于 2003-04-24 12:08 |只看该作者

请教malloc函数前面是什么东西

目前大多少的c编译器提供这类函数的返回是char指针。

有关于这方面的详细解释吗

论坛徽章:
0
5 [报告]
发表于 2003-04-24 13:42 |只看该作者

请教malloc函数前面是什么东西

原帖由 "yantong" 发表:
目前大多少的c编译器提供这类函数的返回是char指针。

有关于这方面的详细解释吗


我怎么没有见过这类编译器?

论坛徽章:
0
6 [报告]
发表于 2003-04-24 13:43 |只看该作者

请教malloc函数前面是什么东西

malloc 函数用于分配一块内存,对于各个C++类来说,不同的是他们在内存中的结构。
对于c++中的new操作符是对malloc的封装,也是用malloc分配一个sizeof(classname)大小的内存,然后强制转化为你的class的pointer,主要是为了给编译器看,以便于你用这个pointer调用类中的member变量,不然,你要自己pointer+sizeof(membername)在转换,太。。。
可以自己实现class的new,这样可以自己管 内存,比如内存pool的实现

论坛徽章:
0
7 [报告]
发表于 2003-04-25 13:00 |只看该作者

请教malloc函数前面是什么东西

原帖由 "yantong" 发表:
目前大多少的c编译器提供这类函数的返回是char指针。

有关于这方面的详细解释吗


这跟编译器没有关系,malloc是标准接口。

论坛徽章:
0
8 [报告]
发表于 2003-04-25 16:40 |只看该作者

请教malloc函数前面是什么东西

我看了谭浩强那本书,发现里面其实很详细的解释,确实前面那东东是强制类型转换。根据它里面说的,按美国的那个标准,malloc返回值是void型指针,但目前很多编译系统规定返回值是char型指针。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP