char[]
很长一段时间以来,我在读写文件时都使用简单的缓冲区。
假设我有一个非常简单的功能,例如:
int f(int fd_in, int fd_out)
{
char buf[4096];
char* bufp = buf;
ssize_t ret, wr;
ret = read(fd_in, buf, sizeof(buf));
/* ... */
while (ret > 0)
{
wr = write(fd_out, bufp, ret);
/* ... */
}
return wr;
}
现在,我对对齐问题有了更多的了解,我开始认为这实际上是次优的,因为缓冲区将针对char
.
为了获得“更强”的对齐方式,为缓冲区使用不同的(更大的)整数类型似乎合理吗?它会使读/写更优化吗?福利能走多远?使用posix_memalign
to get more alignment than integer types可以实现更好的解决方案吗?