heapbuf.h
来自「*** *** *** *** *** *** *** *** *** *** 」· C头文件 代码 · 共 51 行
H
51 行
#ifndef _WDL_HEAPBUF_H_
#define _WDL_HEAPBUF_H_
class WDL_HeapBuf
{
public:
WDL_HeapBuf(int granul=64) : m_granul(granul), m_buf(NULL), m_alloc(0), m_size(0)
{
}
~WDL_HeapBuf()
{
Resize(0);
}
void *Get() { return m_buf; }
int GetSize() { return m_size; }
void *Resize(int newsize)
{
if (!newsize) // special case, free all when resized to 0
{
free(m_buf);
m_buf=NULL;
m_alloc=0;
}
else if (newsize > m_alloc || newsize < m_alloc - (m_granul<<2)) // if we grew over our allocation, or shrunk too far down we should resize down
{
int newalloc = (newsize > m_alloc) ? (newsize + m_granul) : newsize;
void *nbuf=realloc(m_buf,newalloc);
if (!nbuf) return 0; // ack, error!
m_buf=nbuf;
m_alloc=newalloc;
}
m_size=newsize;
return m_buf;
}
private:
void *m_buf;
int m_alloc;
int m_size;
int m_granul;
};
#endif
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?