目标:拥有一个缓冲区(固定大小)的内存,我可以在其中存储任何类型的结构。初始化为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个功能。