sách gpt4 ai đã đi

/Memmove có sử dụng bộ đệm trung gian không?

In lại 作者:塔克拉玛干 更新时间:2023-11-03 08:22:05 31 4
mua khóa gpt4 Nike

这更多是出于好奇而不是任何重要问题,但我只是想知道 memmove 中的以下片段文档:

Copying takes place as if an intermediate buffer were used

(强调我的)。该公式向我建议,是否使用中间缓冲区是特定于编译器实现的。

如果你要我写memmove,我可能会自动执行以下操作:

  • 在堆上分配 N 个字节
  • memcpy 临时文件的源
  • memcpy 到目的地的温度
  • 释放缓冲区

我希望任何人都能...

  1. ...确认该公式是否只是因为它更容易让用户可视化正在发生的事情,而没有修复特定实现实际上phải使用中间缓冲区;
  2. ...阐明一些常见 C++ 编译器(如 gcc 或 Visual C++)中的thật sự实现 - 例如,Thực ra 它使用缓冲区并检查重叠,以便它可以直接 memcpy;
  3. ...也许可以指出我上面的简单算法中明显的错误/效率低下。

1 Câu trả lời

  1. 确实如此。 “好像”意味着它必须表现得像它所做的那样;但并不限制实现实际做到这一点。唯一需要的行为是目标缓冲区以源缓冲区中的正确字节结束,无论缓冲区是否重叠。

  2. 一个常见的实现是,如果目标在源之前开始,则从缓冲区的开头向前复制字节,否则从结尾向后复制。如果存在重叠,这可确保源字节始终在被覆盖之前被读取。

  3. 没有错误,除非分配失败。低效之处在于分配和释放临时缓冲区,以及将每个字节复制两次而不是一次。

关于c++ -/是否/memmove 使用中间缓冲区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22914923/

31 4 0
Bài viết được đề xuất: c++ - 用于在 C++ 中存储非常大的二维数据的数据结构
Bài viết được đề xuất: c++ - 如何仅当类型 T 派生自类型 X 时才允许模板类实例化?
Bài viết được đề xuất: c++ - std::function 作为方法参数
Bài viết được đề xuất: c++ - 乘法溢出测试
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com