作为一个大的系统软件,如果避免内存泄露(memory leakage)是系统实现所面对的关键问题之一,PostgreSQL利用MemoryContext这个概念来解决这个问题,先来看看几个数据结构的定义:
注:在PostgreSQL的代码中,一般struct会以名字加上后缀“Data”,而该struct的指针就是该名字。
typedef
struct MemoryContextMethods
{
void *(*alloc) (MemoryContext context, Size size);
/* call this free_p in case someone #define's free() */
void (*free_p) (MemoryContext context,
void *pointer);
void *(*realloc) (MemoryContext context,
void *pointer, Size siz