c - 这不是只是返回原始大小吗?

标签 c operating-system malloc

我正在尝试弄清楚这段代码的作用。我正在分析我教授的 ma​​lloc 代码,他的代码中有这个函数。我不明白他为什么这样做。对我来说,它只是返回相同数量的分配空间。

static inline size_t word_align(size_t size) {
    return size + (sizeof(size_t) - 1) & ~(sizeof(size_t) - 1);
}

最佳答案

您可能已经亲眼目睹了这一点:一个简单的示例显示了单词对齐。

#include <stdio.h>

size_t word_align(size_t size)
{
    return size + (sizeof(size_t) - 1) & ~(sizeof(size_t) - 1);
}

int main(void)
{
    size_t i;
    for (i=1; i<10; i++)
       printf("%zu %zu\n", i, word_align(i));
    return 0;
}

程序输出:

1 4
2 4
3 4
4 4
5 8
6 8
7 8
8 8
9 12

关于c - 这不是只是返回原始大小吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34730431/

相关文章:

c - 如果用户输入大于 10 的数字,为什么程序会循环相同的输出?

在窗口中更改 GTK 标签位置 - C

c - 这个队列实现有什么问题?

c - 存储基于 C 的 Native Client 实例的用户数据

c - 如何使用C语言程序通过计算机的usb端口打开/关闭电灯泡

c - 在 Linux 上使用 `splice`……其他系统还有什么?

java - 检查文件是否是系统/操作系统文件?

c++ - C/C++ 分配器在多线程上下文中的性能如何?

c - 释放 2D 动态分配的内存时出错

c - 单个 malloc 调用中的二维数组