如何构建一个空的通用内存缓冲区

时间:2017-12-08 13:13:28

标签: c++

目标:拥有一个缓冲区(固定大小)的内存,我可以在其中存储任何类型的结构。初始化为0

问题:它将如何运作?

这是我现在想的。

void Main()
{
   void* BufferHead = CreatBuffer(1024)
}

void* CreateBuffer(int ByteCount)
{
     void* Head = operator new (std::size_t(ByteCount));
     memset(Head, 0, ByteCount);
     return Head;
}

void* AddAt(int ByteIdx, void* DataToAdd, size_t DataSize )
{        
   return memcpy(BufferHead + ByteIdx, DataToAdd, DataSize);
}

void RemoveAt(int ByteIdx, size_t DataSize)
{
   memset(BufferHead+ByteIdx, 0, DataSize);
}

我没有做任何“内存碎片/管理”,也没有将ptr重置为null的智能指针。我想从一个坚实的添加添加/删除/分配接口开始。

编辑:

这个问题的目的是允许我以顺序方式存储不同大小的各种数据类型(结构,基本类型,对象),以便我可以以缓存友好的方式向前和向后读取它它将被“处理”每秒30至60次。 我正在考虑使用双链接节点列表迭代缓冲区,并将所有数据放在缓冲区中的任何时间。

我可以使用最多c ++ 14个功能。

0 个答案:

没有答案