逆向之程序堆棧
計算機內存分佈
計算機內存:計算機內存分爲數據段、代碼段、堆段和棧段。
堆和棧在數據結構中是兩種不同的數據結構。兩者都是數據項按序排列的數據結構。
棧
棧的定義:後進先出的數據結構。
棧的存取規則:後存放的先取先存放的後取,類似於取放在箱子底部的東西,首先要移開壓在它上面的物體
堆
- 堆的定義
堆是一種經過排序的樹形數據結構,每個節點都有一個值。通常我們所說的堆的數據結構是指二叉樹。
- 堆的特性:
根節點的值最小(或最大),且根節點的兩個樹也是一個堆
堆常用來實現優先隊列,堆的存取是隨意的,類似於在圖書館的書架上取書,書的擺放是有序的,書的取出是任意的。
堆和棧存儲數據類型
棧的存儲數據類型:
棧是一個內存數組,是一個LIFO(last-infirst-out,後進先出)的數據結構,棧存儲3種類型的數據:分別是值類型變量的值;程序當前的執行環境;傳遞給方法的參數。
堆的存儲數據類型:
堆是一塊內存區域,在堆裏可以分配大塊的內存用於存儲引用類型對象,與棧不同,堆裏的內存能夠以任意順序存入和移除。