我是C編程新手,所以很好奇內存分配的概念。寫入標準輸出是否分配內存?
寫入標準輸出是否分配內存?
例如:
write(fd, 'X', 1); //where fd is a specific file descriptor (not 1, 2 or 0)
在這種情況下,這代碼添加在文件對應到FD一個「X」字符,所以存儲器中的特定文件分配。 但是這裏:
write(1, 'X', 1);
是否分配內存?如果是,在哪裏?如果否,爲什麼以及如何在標準輸出中顯示「X」?
我是C編程新手,所以很好奇內存分配的概念。寫入標準輸出是否分配內存?
寫入標準輸出是否分配內存?
例如:
write(fd, 'X', 1); //where fd is a specific file descriptor (not 1, 2 or 0)
在這種情況下,這代碼添加在文件對應到FD一個「X」字符,所以存儲器中的特定文件分配。 但是這裏:
write(1, 'X', 1);
是否分配內存?如果是,在哪裏?如果否,爲什麼以及如何在標準輸出中顯示「X」?
這是否分配內存?這取決於操作系統。操作系統可能需要創建一些內部臨時緩衝區來保存數據,但是可能會再次使用一些預先分配的數據空間。如果不打開操作系統並查看它的工作方式,就無法知道,而且不同的系統甚至不同的運行系統的答案也可能不同。
這是否分配內存,你需要釋放?不!操作系統清理它自己的混亂,所以從你的角度來看,你不需要釋放任何東西。通常,您只需要釋放您明確分配的內存,而像這樣的系統調用不會將責任分配給您。
這件事情應該如何?可能不會。通常情況下,如果您正在傳輸大量內存,並且看到相關性能下降,從而導致您調查aaa正在進行的情況,那麼您只會擔心這一點。
謝謝!這是我想要的。 –
這是完全實現定義的。你問來幹什麼? –
您可以檢查您的特定系統,如果您使用Linux或OS X,則可以使用valgrind快速輕鬆地完成。 –
這對我來說是新的,我只是好奇它是如何工作的。 –