2017-10-04 66 views
-2

我是C编程新手,所以很好奇内存分配的概念。写入标准输出是否分配内存?

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

例如:

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

在这种情况下,这代码添加在文件对应到FD一个“X”字符,所以存储器中的特定文件分配。 但是这里:

write(1, 'X', 1); 

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

+2

这是完全实现定义的。你问来干什么? –

+0

您可以检查您的特定系统,如果您使用Linux或OS X,则可以使用valgrind快速轻松地完成。 –

+1

这对我来说是新的,我只是好奇它是如何工作的。 –

回答

2

这是否分配内存?这取决于操作系统。操作系统可能需要创建一些内部临时缓冲区来保存数据,但是可能会再次使用一些预先分配的数据空间。如果不打开操作系统并查看它的工作方式,就无法知道,而且不同的系统甚至不同的运行系统的答案也可能不同。

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

这件事情应该如何?可能不会。通常情况下,如果您正在传输大量内存,并且看到相关性能下降,从而导致您调查aaa正在进行的情况,那么您只会担心这一点。

+0

谢谢!这是我想要的。 –

相关问题