postgresql 内存上下文的理解和代码示例(一)(jung)

首先从简单出发,理解内存上下文(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  -- 该内存上下文的父节点
*/
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值