【发布时间】:2015-08-16 04:18:54
【问题描述】:
对于 I/O 工作,我需要将 N 个字节读入缓冲区。 N 在运行时(不是编译时)是已知的。缓冲区大小永远不会改变。缓冲区被传递给其他例程以进行压缩、加密等:它只是一个字节序列,没有比这更高的了。
在 C 语言中,我会使用 malloc 分配缓冲区,然后在完成后分配 free。但是,我的代码是现代 C++,当然没有 mallocs,而且很少有原始的 new 和 delete:我正在大量使用 RAII 和 shared_ptr。然而,这些技术似乎都不适合这个缓冲区。它只是一个固定长度的字节缓冲区,用于接收 I/O 并使其内容可用。
是否有一个现代的 C++ 成语来优雅地表达这一点?或者,在这方面,我是否应该坚持使用好的 ol' malloc?
【问题讨论】:
-
std::vector。始终std::vector。嗯...几乎除非你有很好的理由。 -
从 C++11 开始,您甚至可以使用
.data()访问向量后面的原始存储 -
@StefanoSanfilippo:总是可以使用
&front()(仅限非空,授予) -
旁白:您是否考虑过将
streambuf子类化作为提供功能的手段? -
和其他人一样,我说使用
std::vector。
标签: c++ memory-management io