File 删除映射到文件的结构(WinApi)

File 删除映射到文件的结构(WinApi),file,winapi,File,Winapi,我有一个结构: struct record { TCHAR teacher[31]; TCHAR discipline[21]; TCHAR faculty[21]; TCHAR group[11]; TCHAR studentsCount[4]; TCHAR examDate[31]; bool isDeleted; }; ... currentView = (LPBYTE)MapViewOfFile(fileMap, FILE_MAP_

我有一个结构:

struct record
{
    TCHAR teacher[31];
    TCHAR discipline[21];
    TCHAR faculty[21];
    TCHAR group[11];
    TCHAR studentsCount[4];
    TCHAR examDate[31];
    bool isDeleted;
};
...
currentView = (LPBYTE)MapViewOfFile(fileMap, FILE_MAP_WRITE, 0, viewStart, viewSize);
recordView = (record*)(&currentView[viewOffset])
如何将其从文件中删除

这不起作用:

delete recordView
我一直在尝试不同的方法,但没有结果


提前谢谢。

您需要一种方法将记录标记为“空”,以便知道如何重新使用空间(高效),或者将所有后续记录上移以填充已删除记录留下的空间(可能效率低下)。现在,我将所有未删除的记录复制到已删除的记录
memcpy(recordView,RecordNotDeleteView,sizeof(record))并将notDeleted记录标记为已删除。我想去掉那些被删除的记录,并考虑一下文件的大小。这似乎是一项简单的任务,但我找不到解决方案。您可以使用它来截断文件。文件映射似乎是一种糟糕的方式。你为什么选择这个?我怀疑您可能没有意识到的另一件事是,您不能从文件的中间删除内容,而期望最后的内容向下移动。你需要把它复制下来。为了更好地使用delete,你只能通过调用new来传递它。