内存分配的问题:关于malloc与free
2010-01-15 18:19
417 查看
关于内存分配,一直想看一看具体是如何实现的。这样,我们就可以更好的避免可能的问题,减少内存的碎片与泄漏,使程序更加安全。
还要注意的是,所提供的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
还要注意的是,所提供的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
相关文章推荐
- 关于内存的分配问题.bss.data .text .rodata HEAP STACK
- 内存储器管理概述、内存分配与释放、地址映射机制(mm_struct, vm_area_struct)、malloc/free 的实现
- 关于 free 命令显示内存使用情况问题
- 关于结构体的内存分配问题--sizeof(/*struct*/A)
- 关于内存分配问题
- 内存管理概述、内存分配与释放、地址映射机制(mm_struct, vm_area_struct)、malloc/free 的实现
- 黑马程序员---关于内存分配问题
- 关于const常量的内存分配问题
- 内存分配方式,堆区,栈区,new/delete/malloc/free
- ffmpeg的内存的分配和释放av_malloc()、av_free()的函数
- 关于程序设计的内存分配问题
- 结构体和共用体关于内存的分配问题
- FFmpeg源代码简单分析:内存的分配和释放(av_malloc()、av_free()等)
- C/C++ 内存分配:malloc/calloc/realloc/free和new/delete
- Linux 内存分配,malloc(), free(),calloc(),realloc()用法
- C/C++ 内存分配方式,堆区,栈区,new/delete/malloc/free
- C/C++ 内存分配方式,堆区,栈区,new/delete/malloc/free
- 关于C中的内存分配问题
- 【C语言】malloc()和free()函数的讲解以及相关内存泄漏问题
- 【C语言】malloc()和free()函数的讲解以及相关内存泄漏问题