写入标准输出是否分配内存?

时间:2017-10-04 15:29:04

标签: c memory stdout

我是C编程的新手,所以我对内存分配的概念感到好奇。

写入标准输出是否会分配内存?

例如:

    write(fd, 'X', 1); //where fd is a specific file descriptor (not 1, 2 or 0)

在这种情况下,此代码在与fd对应的文件中添加“X”字符,因此在特定文件中分配内存。 但是在这里:

    write(1, 'X', 1);

是否分配了内存?如果是的话,在哪里?如果不是,为什么以及如何在标准输出中显示“X”?

1 个答案:

答案 0 :(得分:3)

这会分配内存吗?这取决于操作系统。操作系统可能需要创建一些内部临时缓冲区来保存数据,但同样,它可能会使用一些预先分配的空间来存储数据。如果不破解操作系统并查看操作系统的工作原理,就无法知道,答案可能因系统而异,甚至可能因运行而异。

这会分配你需要解除分配的内存吗?没有!操作系统清理自己的混乱,所以从你的角度来看,你不需要任何东西。通常,您只需要释放您明确分配的内存,并且像这样的系统调用不会将此责任分配给您。

这有关系吗?可能不是。通常情况下,如果您要传输大量内存并查看相关的性能影响,那么您只需要担心这一点,这会导致您调查aaa的情况。