⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 heapbuf.h

📁 *** *** *** *** *** *** *** *** *** *** *** *** *** * assniffer v0.1 alpha, Copyright (C) 2004, Coc
💻 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 + -