swoole_buffer对象在做析构时,需执行内存空间的释放,我们看下其流程。
static PHP_METHOD(swoole_buffer, __destruct)
{
swString *buffer = swoole_get_object(getThis());//获取swoole内部封装对象buffer,其类型为swString
if (buffer)//buffer不为空
{
swString_free(buffer);//释放buffer
}
}
static sw_inline void swString_free(swString *str)
{
sw_free(str->str);//释放buffer中str属性空间信息
sw_free(str);//释放buffer本身
}
#ifdef SW_USE_JEMALLOC
#include <jemalloc/jemalloc.h>
#define sw_malloc je_malloc
#define sw_free je_free //采用jemalloc的free方法
#define sw_calloc je_calloc
#define sw_realloc je_realloc
#else
#define sw_malloc malloc
#define sw_free free //采用原生的free方法
#define sw_calloc calloc
#define sw_realloc realloc
#endif