2 回答

TA貢獻1836條經(jīng)驗 獲得超3個贊
數(shù)據(jù)結(jié)構(gòu)中的一般稱“棧(stack)”,是一種后進先出的數(shù)據(jù)結(jié)構(gòu)。它是一種概念,或者說是一種邏輯技術(shù),與語言、平臺無關(guān)。
內(nèi)存管理中的“堆棧”其實是分為堆(heap)和棧(stack)的,以引用變量為例,引用變量本身存儲在棧中,引用變量指向的值存儲在堆中。
如int[] arr = {1, 2, 3};
變量arr(數(shù)組名)存儲在棧中,變量arr的值(數(shù)組元素)存儲在堆中(普通結(jié)構(gòu))。
內(nèi)存管理中的棧采用的就是數(shù)據(jù)結(jié)構(gòu)中的棧的思想,即遵循后進先出的管理方法。
好比數(shù)據(jù)結(jié)構(gòu)中的棧是一項先進的技術(shù),在內(nèi)存管理中采用了該技術(shù),在CPU的調(diào)度中可能也采用這種技術(shù)。

TA貢獻1868條經(jīng)驗 獲得超4個贊
在編寫程序時(比如C、C++等),可以簡單地把內(nèi)存分為三個不同的區(qū)域:
1、棧,即我們平常說的堆棧,英文為stack,存放自動變量、函數(shù)調(diào)用產(chǎn)生的臨時變量等,該內(nèi)存空間由編譯器自動分配、釋放以及管理,訪問效率高,但不靈活,空間也小。
2、堆,英文為heap,該內(nèi)存空間需要程序員手動申請、釋放,如C的malloc、free以及C++的new、delete等,平常說的內(nèi)存泄露就是操作堆引起的,由于需要手動管理,所以訪問效率較低,但可以根據(jù)需要靈活使用。
3、靜態(tài)存儲區(qū),也是編譯器自動管理的,用于存放全局變量、局部靜態(tài)變量等,與棧中變量的區(qū)別是在程序運行期間一直保存變量的值。
- 2 回答
- 0 關(guān)注
- 1142 瀏覽
添加回答
舉報