看板Programming
标 题Re: [问题] 没有作业系统的动态记忆体管理
发信站中央大学松涛风情资讯站 (Sat Aug 16 21:05:18 2008)
转信站ptt!ctu-reader!ctu-gate!news.nctu!news.ncu!Evergreen
> ==>发信人: [email protected] (绿豆嘉义人), 信区: programming
> 请问一下各位大大
> C里面, 印象中要用动态记忆体管理像是malloc这种功能,
> 是不是都要有OS支援才可以 ?
> 那如果在没有OS的环境下跑 (例如用ARM编译到某种电路板上跑的程式)
> 是不是这种功能就得要完全自己写了呢
> 那如果要自己写, 要怎麽得知目前记忆体的使用状况勒?
> 不知道这样问会不会太怪 @_@
一般 Compiler 都会提供 stdlib, 而 malloc 是 stdlib 中的一个标准函式
所以不管有没有 OS, 应该都会有
如果你用的 compiler 没有提供, 或是你想要练功, 而想自己写看看, 偍供你
这个想法:
找出 data 和 bss 的顶端和 stack 最低位址间的记忆体容量 (heap size,
这个部份可以由 compiler 预设的 segment symbol 找出来), 然後分成固定
size (ex. 16 bytes) 的小区块来管理
想要参考 source code 的话, 一些整合开发环境如 Keil C-51, IAR Embedded
Workbench, Freescale Codewarrior, Renesas High-performance Embedded
Workshop, Hi-Tech Soft PICC/PICC18 等都有提供 alloc 程式库, 并且 C51,
CW, HEW 和 PICC/PICC-18 评估版都有附 library source, 可以下载来研究看看
--
** 版权声明 **
本篇文章欢迎转载收录,无须为任何用途支付任何费用。
本文一经转载收录引用,本人即无须对其内容负责。
--
◎ Origin: 中央松涛站□bbs.csie.ncu.edu.tw From: 218-168-48-85.dynamic.hinet.n
1F:推 freelancer:想说compiler和library是两个不同的东220.136.211.199 08/17 01:39
2F:→ freelancer:东220.136.211.199 08/17 01:39