【发布时间】:2020-12-16 19:57:09
【问题描述】:
我有一个关于内存块的任务。我们有一个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));
【问题讨论】:
-
你需要展示一些代码。很难猜出你的意思。
-
内存存储值。没有办法“删除”或“擦除”内存以使其不包含值。您可以将内存设置为全零字节或其他表明那里没有有效记录的模式。
memset可用于将其设置为全零或一个值的所有字节。你到底想做什么? -
目标是不再引用该记录。您建议的模式是将记录设置为无效的一种方式
-
正如第一条评论中所建议的那样,确实需要一些代码(最好是 minimal reproducible example )才能完全理解您在说什么。
-
什么意思“不再有对该记录的引用”?你在说什么样的“参考”?您在这种情况下使用该术语非常令人困惑(并且可以说不适用于 C 代码)