2017-10-04 118 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

謝謝!這是我想要的。 –