首先从简单出发,理解内存上下文(MemoryContext)相关的内容.
系统中内存的分配操作都是在各种语义的内存上下文MemoryContext中进行,因此可以很轻松的通过内存上下文释放其中的所有的相关内存空间,而不用费心去释放每一块空间,这样内存的分配和释放更加快捷和可靠!这种机制借鉴了操作系统的一些概念。操作系统中进程可以其执行环境中执行而不用相互影响。
postgresql 中通过MemoryContextCreate函数 来初始化一个内存上下文。下面的实例为两个内存上下文的初始化。
#include <stdio.h>
#include <stdlib.h>
typedef struct MemoryContextData *MemoryContext;
typedef struct MemoryContextData
{
MemoryContext parent; /* NULL if no parent (toplevel context) */
MemoryContext firstchild; /* head of linked list of children */
MemoryContext nextchild; /* next child of same parent */
char *name; /* context name (just for debugging) */
char isReset; /* T = no space alloced since last reset */
} MemoryContextData;
/*
* name : MemoryContextCreate
* function : 初始化内存上下文
* parameter : name -- 内存上下文的名称
parent -- 该内存上下文的父节点
*/
MemoryContext MemoryContextCreate( const char *name

本文介绍了PostgreSQL的内存上下文MemoryContext的概念,它使得内存分配和释放更为便捷可靠,类似于操作系统的内存管理。通过MemoryContextCreate初始化内存上下文,并预告下章将讲述如何在内存上下文中分配和管理内存。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



