📄 csheap.h
字号:
/***********************************************************************
CSA Library, Free Evaluation Version 2.2.0
Release: June 9th 1997
Class to avoid heap fragmentation.
It allocates and frees memory in chunks of about 2 Kb and
does its own administration to deal with the many
small blocks.
Copyright(c) 1994-1997
ComBits
The Netherlands
***********************************************************************/
#ifndef __CSHEAP_H
#define __CSHEAP_H
#include "stdio.h"
#include "cstools.h"
#include "cstypes.h"
#include "cscopton.h"
class HEAP
{
U16 size; // Chunck size
U16 nr; // Number of allocations in a page.
U16 rs; // Real chunk size;
U16 pasi; // Page size;
U32 nrbl; // Number of Blocks allocated.
U16 is_open;
void *np; // Next page
void *fp; // Chain of full pages.
typedef struct
{
void *n; // next page
void *p; // prev page
void *e; // empty chain
U16 count;// number available
} pahe; // Page HEader
protected:
inline void connect(void *l,void *r);
void *new_page(void);
inline void unchain(void *&chain,void *p);
inline void head_chain(void *&chain,void *p);
void zap2(void );
public:
~HEAP(void) { if (is_open) close(); }
HEAP(void) { is_open=FALSE; fp=np=NULL; nrbl=0; size=0; }
////////////////////// Compatibility functions //////////////////////////
#ifndef _CP_003
// The GNU compiler generates an error on these functions...
void free(void *p) { vfree(p); }
void *malloc(void) { return vmalloc(); }
#endif
////////////////////// Init/Creation ////////////////////////////////////
void init(U16 s,U16 page_size=2048);
////////////////////// Open/Close ///////////////////////////////////////
void close(void);
int open(void);
////////////////////// Malloc/Free //////////////////////////////////////
void vfree(void *);
void *vmalloc(void);
void empty(void );
void zap(void );
U32 blocks(void) { return nrbl; }
void report(FILE *fp,int sub);
};
#include "cscoptof.h"
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -