作者:hahaya
日期:
Nginx内存分配简介
Nginx内存分配的源码主要位于${NGX_ROOT}/src/os/unix/ngx_alloc{.h|.c}文件中,Nginx提供ngx_alloc、ngx_calloc和ngx_memalign三个内存分配相关的函数,其中ngx_alloc和ngx_calloc是对系统malloc函数的封装,ngx_memalign在Linux系统下是对系统posix_memalign函数的封装,而在Solaris系统下是对系统memalign函数的封装,在其他系统下则是对ngx_alloc的define。既然Nginx提供了内存分配的函数,同样相应的也提供了内存释放的函数ngx_free,ngx_free仅仅是对系统函数free的define,因为malloc、posix_memalign、memalign分配的内存都是通过free函数释放的。
源码分析
ngx_alloc.h
ngx_alloc.c
测试
为了方便测试和学习Nginx的内存分配,以免引入过多的文件,没有使用Nginx中的文件包含机制,去掉了出现分配错误后写入日志文件的操作,并且只关注Linux系统,测试代码如下:
ngx_alloc.h
ngx_alloc.c
ngx_alloc_test.c
makefile