假设我创建一个成员变量指针pBuffer。我将此缓冲区发送到一些未知的土地以填充数据。现在说pBuffer中有任意数量的数据。

问:是否有一种方法可以在不完全删除pBuffer的情况下重置pBuffer,同时仍然重新分配它占用的所有不必要的内存?

例:

class Blah
{
public:

    unsigned char* pBuffer;

    Blah(){pBuffer = NULL;}
    ~Blah(){}

    FillBuffer()
    {
        //fill the buffer with data, doesn't matter how
    }

    ResetBuffer()
    {
        //????? reset the buffer without deleting it, still deallocate memory ?????
    }

};

int main()
{
    Blah b;
    b.FillBuffer();
    b.ResetBuffer();
    b.FillBuffer(); //if pBuffer were deleted, this wouldn't work
}

最佳答案

如果您知道缓冲区中的内容数量与缓冲区中的剩余空间,请尝试realloc()

关于c++ - 我如何 “reset”一个缓冲区?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14841927/

10-10 04:56