我正在阅读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/