📄 heapbuf.h
字号:
#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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -