嵌入式100題(005) 程序的空間模型

2022-06-09 16:18:11 字數 349 閱讀 3128

linux下使用虛擬記憶體空間給每乙個程序,32位作業系統下,每個程序都有獨立的4g虛擬記憶體空間。

其中包括:

核心區:使用者**不可見的區域,頁表就存放在這個區域中。

使用者區:

a、**段:只可讀,不可寫,程式**段。

b、資料段:儲存全域性變數,靜態變數的區域。

c、堆區:就是動態記憶體,通過malloc,new申請記憶體,有乙個堆指標,可以通過brk系統呼叫調整堆指標。

d、檔案對映區域:通過mmap系統呼叫,如動態庫,共享記憶體等對映物理空間的記憶體區域。可以單獨釋放,不會產生記憶體碎片。

e、棧區:用於維護函式呼叫的上下文空間,用ulimit -s 檢視。一般預設為8m。

嵌入式100題(48) 氣泡排序

氣泡排序 氣泡排序就是把小的元素往前調或者把大的元素往後調。比較是相鄰的兩個元素比較,交換也發生在這兩個元素之間。所以,如果兩個元素相等,我想你是不會再無聊地把他們倆交換一下的 如果兩個相等的元素沒有相鄰,那麼即使通過前面的兩兩交換把兩個相鄰起來,這時候也不會交換,所以相同元素的前後順序並沒有改變,...

嵌入式100題(51) 歸併排序

歸併排序 歸併排序是把序列遞迴地分成短序列,遞迴出口是短序列只有1個元素 認為直接有序 或者2個序列 1次比較和交換 然後把各個有序的段序列合併成乙個有序的長序列,不斷合併直到原序列全部排好序。可以發現,在1個或2個元素時,1個元素不會交換,2個元素如果大小相等也沒有人故意交換,這不會破壞穩定性。那...

嵌入式100題(54) vector list異同

vector 連續儲存的容器,動態陣列,在堆上分配空間。底層實現 陣列。兩倍容量增長 vector 增加 插入 新元素時,如果未超過當時的容量,則還有剩餘空間,那麼直接新增到最後 插入指定位置 然後調整迭代器。如果沒有剩餘空間了,則會重新配置原有元素個數的兩倍空間,然後將原空間元素通過複製的方式初始...