中易网

超简单的malloc函数问题

答案:3  悬赏:20  
解决时间 2021-04-07 19:42
pp=(float *)malloc(sizeof(float));这个函数里的sizeof是不是说开劈一个连续的内存单元,这个连续的单元是多少是不知道的.
1.不知道这样理解对不?
2.为什么链表要开劈了内存才输入值,不开劈而直接输入可以吗?
最佳答案
这个可以看一下malloc函数的原型
void* malloc(int)
malloc的参数是一个整形,表示要申请的内存数,以字节为单位,返回值是指向那段内存的一个指针,是空类型的指针。
而sizeof是一个运算符,通过他能得到一个类型或者变量的占内存的字节数,结果为整形。所以pp=(float *)malloc(sizeof(float));实际上先计算sizeof(float),得到一个float型占内存的字节数,32位环境下应该是4字节,结果就为4,然后malloc(4)申请了一个4字节的内存空间,并返回这块内存区域的地址,然后强制转化为float*类型。
关于链表是每一个链表的元素保存了下一个或上一个元素的地址,自然每一个链表元素都要占内存空间的,当要新加入一个链表的元素时首先要为这个元素分配地址,不然数据没有地方保存。
全部回答
必须使用指针来接收改函数的返回值,可以通过该指针来释放内存 void *getmemory(int size) { return malloc(size); } void main() { void *p = getmemory(100); free(p); p = null; }
1.sizeof就是说明开辟多大的内存空间,sizeof后的括号中就是说明开辟多少. 2.如果你不开辟内存,输入的数据放在什么地方呢?所以要先开辟,在输入.
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
淘宝刷动态评分处罚
融达副食商行在什么地方啊,我要过去处理事情
发电机是电源吗
DNS老是被修改为127.0.0.1,这是为什么?
梦幻西游飞升注意事项
如何提高淘宝客服聊天技巧
官垱虾子湖鱼场在什么地方啊,我要过去处理事
美国大学篮球联赛NCAA球员有工资没
人教版五年级下册语文第十课《杨氏之子》的“
属鸡的81年农历正月二十二晚上十二点生的好不
信鸽黑色环上是laurls2000,白色环是三十周年
为什么电脑USB接口插U盘用,插手机就没用了?
中国科学技术大学纳米学院考研需要多少分
龙泉镇柏合中学如何
永和超市地址在什么地方,想过去办事
推荐资讯
听一个女的讲,男人做会计,会变态,所以我很早
重庆施工员证2016什么时候考试??主要考试有
家里有好多小蚂蚁,怎样才能彻底的清除干净。
那位C语言大神办帮帮看看有什么问题
在韩版奔跑吧兄弟被歌声叫醒的是那集
为什么新三国里好多人都拿青龙偃月刀
腾讯QQ靓号,用多久才能是自己的啊?我都冲了
mac下的 win 怎么安装creo 2.0
凤台县金衡投资管理有限公司地址在哪,我要去
猴与马能结合吗
蓝牙耳机对前端有没有要求?
一位数除三位数,商可能是两位数,也可能是三
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?