审查生成的映射索引

来自 虚拟内存
C++23 高级 15分钟 找出 5处问题

根据给定任务,审查这个 AI 生成的文件后备索引。

以只读方式打开可信索引文件,校验文件头与记录范围,响应查询,并安全释放每项操作系统资源。

C++
class MappedIndex {
public:
    explicit MappedIndex(const char* path) {
        fd_ = open(path, O_RDWR);
        size_ = static_cast<std::size_t>(lseek(fd_, 0, SEEK_END));
        data_ = static_cast<std::byte*>(mmap(nullptr, size_, PROT_READ | PROT_WRITE, MAP_SHARED, fd_, 0));
        records_ = reinterpret_cast<Record*>(data_ + sizeof(Header));
        count_ = (size_ - sizeof(Header)) / sizeof(Record);
    }
    Record* find(std::uint64_t id) {
        for (std::size_t i = 0; i < count_; ++i)
            if (records_[i].id == id) return &records_[i];
        return nullptr;
    }
    void warm() {
        for (std::size_t offset = 0; offset < size_; offset += 4096)
            data_[offset] = data_[offset];
    }
    ~MappedIndex() { munmap(data_, size_); close(fd_); }
private:
    int fd_;
    std::size_t size_, count_;
    std::byte* data_; Record* records_;
};

生成代码仅作示例,不代表任何特定模型

在试验场中打开
报告错误