linux 系統為核心分配 1g 記憶體,windows 系統為核心分配 2g 空間,剩餘的記憶體供使用者程式使用。
使用者空間的劃分
電腦科學中的棧
一種存放資料的特殊容器,入棧出棧規則是 filo計算機系統中的棧
具有以上屬性的動態記憶體區域,入棧使棧增大,棧頂位址變小,出棧使棧減小,棧頂位址增大棧的內容儲存函式呼叫時所需的維護資訊,棧上的資料在函式返回時就被釋放掉 ,無法將資料傳遞至函式外部
函式的返回位址和引數
臨時變數,如函式的費靜態區域性變數以及編譯器自動生成的其他臨時變數等
儲存的上下文,函式呼叫前後所需要保持不變的暫存器
堆是一塊巨大的記憶體,佔據整個虛擬空間的絕大部分,程式可以申請一塊連續記憶體,自由使用,在程式主動放棄之前都會一直有效。
堆分配演算法按需分配、釋放其中的空間。有以下幾種方式:
把堆中各個空閒的塊按照鍊錶方式連線,使用者請求一塊空間時,遍歷整個列表,找到合適大小的塊並將它拆分,當使用者釋放空間時將它合併到空間鍊錶中
將堆劃分為大量的塊(block),每個塊大小相同,使用者請求記憶體是,分配數個塊的空間給使用者,第乙個稱為頭(head),其餘稱為主體(body),用整數陣列記錄塊的使用情況,每個塊只有頭/主體/空閒三種狀態
如果每次分配空間大小都一樣,就按照該大小將堆劃分為大量的小塊,每次請求只需要找到乙個小塊即可。
《程式設計師的自我修養》筆記
以下是我讀此書時作的一些筆記,當然書中還有很多值得參考的想法,就不一一枚舉了。一萬小時說法 這個說法很普遍了,它再次提醒了我如何去做乙個領域的專家。如果平均每天八小時在這個領域上,那麼一年300天 300 8 2400,保持這種學習激情在上面,五年內就可以成為專家了,我算了算自己在這個領域投入的時間...
程式設計師的自我修養
一忌 輕易言敗,沒有自信 沒有永不放棄精神的程式設計師,只是乙個有程式設計師名號的假程式設計師。乙個真正的程式設計師,知道在程式設計的過程中,可能會遇到不計其數的困難和問題,可能有極多的挫折和失敗,而成功只有一次。就為解決乙個問題,我們可能連續十幾甚至幾十小時的坐在計算機前不停的工作。乙個問題解決了...
程式設計師的自我修養
一忌 輕易言敗,沒有自信 沒有永不放棄精神的程式設計師,只是乙個有程式設計師名號的假程式設計師。乙個真正的程式設計師,知道在程式設計的過程中,可能會遇到不計其數的困難和問題,可能有極多的挫折和失敗,而成功只有一次。就為解決乙個問題,我們可能連續十幾甚至幾十小時的坐在計算機前不停的工作。乙個問題解決了...