📄 memory.c
字号:
/* $PostgreSQL: pgsql/src/interfaces/ecpg/ecpglib/memory.c,v 1.7 2005/10/15 02:49:47 momjian Exp $ */#define POSTGRES_ECPG_INTERNAL#include "postgres_fe.h"#include "ecpgtype.h"#include "ecpglib.h"#include "ecpgerrno.h"#include "extern.h"voidECPGfree(void *ptr){ free(ptr);}char *ECPGalloc(long size, int lineno){ char *new = (char *) calloc(1L, size); if (!new) { ECPGraise(lineno, ECPG_OUT_OF_MEMORY, ECPG_SQLSTATE_ECPG_OUT_OF_MEMORY, NULL); return NULL; } memset(new, '\0', size); return (new);}char *ECPGrealloc(void *ptr, long size, int lineno){ char *new = (char *) realloc(ptr, size); if (!new) { ECPGraise(lineno, ECPG_OUT_OF_MEMORY, ECPG_SQLSTATE_ECPG_OUT_OF_MEMORY, NULL); return NULL; } return (new);}char *ECPGstrdup(const char *string, int lineno){ char *new; if (string == NULL) return NULL; new = strdup(string); if (!new) { ECPGraise(lineno, ECPG_OUT_OF_MEMORY, ECPG_SQLSTATE_ECPG_OUT_OF_MEMORY, NULL); return NULL; } return (new);}/* keep a list of memory we allocated for the user */static struct auto_mem{ void *pointer; struct auto_mem *next;} *auto_allocs = NULL;voidECPGadd_mem(void *ptr, int lineno){ struct auto_mem *am = (struct auto_mem *) ECPGalloc(sizeof(struct auto_mem), lineno); am->pointer = ptr; am->next = auto_allocs; auto_allocs = am;}voidECPGfree_auto_mem(void){ struct auto_mem *am; /* free all memory we have allocated for the user */ for (am = auto_allocs; am;) { struct auto_mem *act = am; am = am->next; ECPGfree(act->pointer); ECPGfree(act); } auto_allocs = NULL;}voidECPGclear_auto_mem(void){ struct auto_mem *am; /* free just our own structure */ for (am = auto_allocs; am;) { struct auto_mem *act = am; am = am->next; ECPGfree(act); } auto_allocs = NULL;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -