|
【靠谱例程联盟】 20131231 malloc/free 和 堆 的问题,本质上是 (堆)内存管理
[复制链接]
本帖最后由 辛昕 于 2013-12-31 21:03 编辑
我实在无意引起新一波讨论:
关于在单片机上使用malloc/free的问题。
我之前写了一个基于 malloc/free的 CStyleString.作为一个做单片机为主的我来说,我当然是希望它们可以用于单片机。是的,也许String功能对于单片机意义不大,但是类似于的vector意义可就大了。而它们同样涉及这对 堆内存管理 的需求。
我知道你们随便跑出一个人都会告诉我
"在单片机上用动态分配是找死。"
——或者类似的话。
然而,我还是决定继续往下走。此前,我翻阅了包括 PJP的C标准库,C和指针 在内的好几本 C经典,但发现它们只是提到怎么使用这些函数。却完全没有我想要的答案
“在单片机上动态分配内存,需要注意什么?”
这里面一个关键是,单片机这种资源稀缺型系统,内存非常有限。而且他不比PC机,随随便便就有一个操作系统——几乎所有的操作系统都提供了 内存管理功能。我知道一些嵌入式操作系统的大致方案,就是一点都不动态,是使用静态内存。
其实C标准库本身,与任何操作系统的实现无关,也不依赖操作系统,因此它本身是非常独立的。而且阅读C标准库你会发现,其实C的实现者并不只知道PC机和windows或者linux。他们同样知道其他各类包括我们的单片机在内的各种 计算机硬件。
因此它们已经考虑得够多了。
而很多时候我只希望,我可以,“妥善的使用,正确的使用 已经有的成熟技术”,然后免除许多麻烦。
一直忘了今天是2013年最后一天,所幸,花了几个晚上考虑的一个问题,总算找到一个更贴切的 路标:
内存管理
|
|