程式執行的過程經歷幾個階段:編譯---鏈結---裝入記憶體模組---執行階段。
靜態鏈結指在執行前將所有的目標模組都鏈結到可執行檔案中等待裝入執行。
動態鏈結分為裝入時動態鏈結和執行時動態鏈結。動態鏈結允許程式不必形成完整的可執行檔案,而是生成乙個未完成鏈結的外部模組,等待裝入。
裝入時動態鏈結指在裝入時遇到外部模組連線查詢相應的目標模組裝入記憶體,這種方法仍然要將所有的鏈結模組都裝入記憶體,知識將鏈結推遲到了裝入時。
執行時動態鏈結指在執行時遇到鏈結部分查詢相應的模組裝入記憶體,木有用處的模組將不會裝入記憶體。
程式裝入分為靜態裝入和動態裝入,靜態裝入是裝入時採用靜態重定位方法載入,裝入後不能在改變位置。動態裝入採用動態重定位在執行的過程中進行裝入記憶體。
靜態鏈結可以使用靜態裝入和動態裝入。
裝入時動態鏈結使用靜態裝入,執行時動態鏈結使用動態裝入。
記憶體管理學習筆記
1.棧 堆和靜態區 靜態區 儲存自動全域性變數和static變數 包括全域性靜態變數和區域性靜態變數 靜態區的內容在整個程式的生命週期內都存在。棧 儲存區域性變數。棧上的內容只在函式的範圍內存在,當函式執行結束,這些內容也會自動被銷毀。其特點是效率高,但是空間大小有限。堆 由malloc系列函式或n...
cocos記憶體管理學習
口訣 1.誰建立,誰釋放。通過new或者clone建立的物件,必須呼叫release或者autorelease。2.new,clone以外的方法建立的物件都被宣告了autorelease。3.誰retain,誰release。無論這個物件是如何生成的,只要呼叫了retain就要呼叫release。正...
object c 記憶體管理學習筆記
nsautoreleasepool pool nsautoreleasepool alloc init pool drain 這個函式可以把autoreleasepool裡的物件釋放 在for迴圈中每次都釋放記憶體池的示例 nsautoreleasepool temppool for i 0 i a...