據我所知,線程共享堆內存,但是不同的進程也可以共享一個堆,默認情況下會發生嗎?多個進程可以共享堆內存嗎?
如果不是,那麼當使用malloc時,直到堆內存用完,malloc操作是否只是返回堆中的下一個內存塊?因爲它明確沒有分配,因爲只有一個進程可以訪問堆,例如 例如,可以說堆內存可容納1-10個地址,第一個malloc調用(對於3個字節)不需要搜索它剛剛分配的任何空閒內存1-3的地址和返回地址1,現在第二次調用也不需要尋找空閒空間它剛剛回復地址4,依此類推...... 所以直到內存耗盡malloc才返回下一塊內存的地址它不需要尋找免費的未分配內存。
這是真的發生了什麼?
我建議你指定你問的平臺。 – user694733
太長時間才能在SO答案中複製,但[wikipedia](https://en.wikipedia.org/wiki/C_dynamic_memory_allocation#Implementations)給出了有關不同malloc實現的一些解釋 - 順便提一下,C標準確實不會**指定malloc實現... –
你在問兩個問題。第一個是關於共享內存,第二個是關於'malloc'的行爲(除非你告訴我們你指的是哪個實現,否則無法準確回答;-))。請把你的問題分成不同的線索。 –