靜態重定位:即在程序裝入內存的過程中完成,是指在程序開始運行前,程序中的各個地址有關的項均已完成重定位,地址變換通常是在裝入時一次完成的,以后不再改變。
動態重定位:即在程序運行過程中要訪問數據時再進行邏輯地址與物理地址的變換(即在逐條指令執行時完成地址映射)。
(解決碎片問題,以及使程序可浮動的最好的辦法是采用動態重定位技術)
動態內存分配是指在程序執行的過程中動態地分配或者回收存儲空間的分配內存的方法。
動態內存分配不象數組等靜態內存分配方法那樣需要預先分配存儲空間,而是由系統根據程序的需要即時分配,且分配的大小就是程序要求的大小。
內存的靜態分配和動態分配的區別主要是兩個:
一是時間不同。靜態分配發生在程序編譯和連接的時候。動態分配則發生在程序調入和執行的時候。
二是空間不同。堆都是動態分配的,沒有靜態分配的堆。