首页 > 解决方案 > 删除用 memcpy 编写的结构

问题描述

我有一个关于内存块的任务。我们有一个struct Record我需要保存在这些内存块中的东西。每个块包含 5 条记录,我在一个块列表和一个int CountOfRecords.

我们还有一个 DeleteRecord 函数,它可以从内存块中删除(duh)一条特定的记录。现在,除了减少计数并将所有下一条记录向前移动以实际删除该记录之外,有没有办法实际删除用 memcpy 写入的内容?就像将 NULL 之类的东西写成结构实例一样?Memmove 似乎没有提供这样的应用程序。

编辑:我这样写记录

//block is the pointer to block,int is for the Count, and record is placed
memcpy(block+sizeof(int)+sizeof(Record),&record,sizeof(Record));

标签: cmemoryblockmemcpy

解决方案


您基本上不想移动数据,而是将内存设置为零,memset 怎么样?

memset(block+sizeof(int)+sizeof(Record), 0, sizeof(Record));

但是您必须以某种方式记住,此时的记录已清零(未使用),最好是某些属性。


推荐阅读