2 回答

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

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