关于内存分配,一直想看一看具体是如何实现的。这样,我们就可以更好的避免可能的问题,减少内存的碎片与泄漏,使程序更加安全。
还要注意的是,所提供的malloc是不是一个可重入的实现。一般地,标准库的实现都不是可重入的。因此,在一个存在重入问题的上下文中,应当采取一定的保护措施。比如,在单线程的环境中,在中断中不使用malloc与free。在多线程环境中,用互斥信号量加以保护。当然,有些RTOS中提供的对应函数是线程安全的。这一点应当在使用前了解清楚。
[参考资料]
1.“Inside memory management, The choices, tradeoffs, and implementations of dynamic allocation”, by Jonathan Barlett, http://www.ibm.com/developerworks/linux/library/l-memory/
2. “Deterministic dynamic memory allocation & fragmentation in C & C++”, by Colin Walls, http://www.embedded.com/222300428?pgno=1