打印

谁能告诉我malloc的具体用法

[复制链接]
3417|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
solo777|  楼主 | 2011-12-25 23:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我目前为止都是使用数组。

没有使用过一个malloc()

谁能告诉我一个具体的malloc()用处。

比如485通信,缓冲区,环形缓冲区。这个缓冲区是固定长度的。(是一个数组)

如果使用malloc()呢?每次为数据帧申请一个内存区域,那个位置(也就是数据帧的首地址)写入缓冲区队列中?

我总觉得不是这么简单吧!

相关帖子

沙发
solo777|  楼主 | 2011-12-25 23:07 | 只看该作者
malloc()的用处,就是为了大数据,不确定个数的大数据,而发明的内存使用方法???

共用内存池???(因为不同线程,需要大数据的时候,一般都是非同时需求)

是这个意思吗?

这是一种节省内存的方法????????

是这样吗?

使用特权

评论回复
板凳
solo777|  楼主 | 2011-12-26 12:50 | 只看该作者
自己顶

使用特权

评论回复
地板
xinzha| | 2011-12-26 14:50 | 只看该作者
malloc的一个好处是动态分配释放,当你需要的时候申请,当你不需要的时候释放,共享同一个内存池,这样就做到了资源利用的最大化。
所谓的malloc也就是对堆的管理,和栈的管理一样都是要实现对内存利用的最大化,只是一个是隐式的,一个是显式的。

使用特权

评论回复
5
batsong| | 2011-12-26 15:08 | 只看该作者
单片机程序没必要动态分配,要占多少内存都是设计时算好了的,自己管理就够了

使用特权

评论回复
6
375606426| | 2011-12-26 15:16 | 只看该作者
??

使用特权

评论回复
7
solo777|  楼主 | 2011-12-26 16:09 | 只看该作者
单片机程序没必要动态分配,要占多少内存都是设计时算好了的,自己管理就够了
batsong 发表于 2011-12-26 15:08

意思就是全部是数组方式,或者什么,所有的ram访问,直接使用变量。

那么stm8,iar中为heap保留空间,我是不是可以设置为0(heap=0)?

使用特权

评论回复
8
solo777|  楼主 | 2011-12-26 16:10 | 只看该作者
malloc的一个好处是动态分配释放,当你需要的时候申请,当你不需要的时候释放,共享同一个内存池,这样就做到了资源利用的最大化。
所谓的malloc也就是对堆的管理,和栈的管理一样都是要实现对内存利用的最大化,只 ...
xinzha 发表于 2011-12-26 14:50


malloc()的用处,就是为了大数据,不确定个数的大数据,而发明的内存使用方法???

共用内存池???(因为不同线程,需要大数据的时候,一般都是非同时需求)

是这个意思吗?

这是一种节省内存的方法????????

是这样吗?

使用特权

评论回复
9
xinzha| | 2011-12-26 16:41 | 只看该作者
基本上可以理解为是在大系统中节省内存的方法,其前提是有动态分配的可能,而且是否使用malloc会有一个平衡点,当系统复杂到一定程度之后靠手工控制memory map基本上是做梦,而如果系统比较简单,自己管理会更高效。这个东西跟是否嵌入式关系不大,比如说在通信设备或者军事上的火控系统中就大量应用了vxworks,其中就大量使用了malloc,05年的时候接入网级别的设备上已经是512MB以上的ram了,只能malloc。嵌入式系统不见得比pc系统小,只是嵌入式系统多数有专用用途,而pc系统一般认为是通用计算系统。
至于malloc的起源就不清楚了,可能只是为了应用方便,就像操作系统一样,没有操作系统,cpu和外围硬件一样可以工作,只是有了操作系统,可以让使用者更方便。

使用特权

评论回复
10
chnexplorer| | 2011-12-26 22:33 | 只看该作者
void* malloc(size)

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

83

主题

375

帖子

2

粉丝