| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1792 人关注过本帖
标题:关于malloc
只看楼主 加入收藏
easygo
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2015-11-21
结帖率:0
收藏
已结贴  问题点数:20 回复次数:9 
关于malloc
malloc(len*sizeof(int))可以用malloc(4*len)替换么,感觉问的这个问题好幼稚
2015-12-30 22:56
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:3 
可以

授人以渔,不授人以鱼。
2015-12-30 23:01
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 

授人以渔,不授人以鱼。
2015-12-30 23:16
未来大仙
Rank: 6Rank: 6
来 自:黑窟窿
等 级:侠之大者
威 望:4
帖 子:263
专家分:491
注 册:2015-6-20
收藏
得分:3 
一般情况下可以,不同的编译器可能会不一样

好好学习,天天向上!
2015-12-31 10:10
K子凌
Rank: 2
等 级:论坛游民
帖 子:15
专家分:29
注 册:2015-12-24
收藏
得分:3 
只要malloc的括号内是一个能够算出具体值的表达式就可以。
2016-01-03 13:02
邹阳
Rank: 6Rank: 6
等 级:侠之大者
威 望:4
帖 子:124
专家分:402
注 册:2015-10-8
收藏
得分:3 
一般需要在开头进行预编译 #define LEN

I'm a new comer
2016-01-03 13:11
foxeer
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:107
专家分:136
注 册:2015-12-29
收藏
得分:3 
只要你再分配内存前定义好类型就行,比如char *a=malloc(4*len);
2016-01-03 16:57
winnie96
Rank: 2
等 级:论坛游民
帖 子:51
专家分:86
注 册:2015-12-14
收藏
得分:3 
是可以的
2016-01-03 20:47
Yuzai酱
Rank: 2
等 级:论坛游民
帖 子:18
专家分:67
注 册:2016-1-4
收藏
得分:3 
应该这样说,理论上是可以得,但是实际是行不通了。
来同学,我这样给你解释哈,好比说(int)malloc(len * sizeof(int));
c语言只规定了语法规则,但是具体怎么实现是要通过编译器的!
再比如你说的可不可以写成(int)malloc(len * 4);
那好,我们都知道int一般情况下占4个字节,理论上可以,但是那不同的编译器是不同的。
你怎么能保证A编译器int占4个字节,那B编译器就不能占2个字节那。B编译器的作者说了,我非主流我愿意。
所以这个代码只能在A编译器运行,移植到B编译器就麻烦了,说白了就是不方便移植,over!
2016-01-04 21:50
Bingo_yue
Rank: 2
等 级:论坛游民
帖 子:11
专家分:10
注 册:2016-1-10
收藏
得分:0 
一般情况下可以,不同的编译器可能会不一样   有的int型占4个字节  这是可以的   有的占两个字节  这就不能用   
一般16位的C编译器 int型占2字节;32位和64位的编译器通常是4字节。
使用前最好sizeof(int) 看看当前编译器如何定义的。  
2016-01-10 20:56
快速回复:关于malloc
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.062851 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved