我正在阅读cat源代码,但我不理解以下代码

insize = MAX (insize, outsize);
inbuf = xmalloc (insize + page_size - 1);


为什么创建大小为insize + page_size -1的缓冲区?

最佳答案

这是常见的习惯用法,当您需要分配将在页面边界上对齐的缓冲区时(各种API需要页面对齐的缓冲区,这也可以提高内存吞吐量)。没有可移植的方法向malloc请求页面对齐的缓冲区,因此,请求x + PAGE_SIZE-1字节保证了您将能够将结果指针向上舍入到下一个页面边界,并且仍然使其指向一个块。至少x个字节。

关于c - 为什么inbuf = xmalloc(insize + page_size-1)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24805417/

10-09 17:18