棧的兩種存儲方式 棧存放的是什么?
棧存放的是什么?在C中,內(nèi)存分為四個區(qū)域,它們是堆、堆棧、靜態(tài)存儲區(qū)和常量存儲區(qū)1。堆棧是編譯器在需要時分配的變量的存儲區(qū)域,在不需要時自動清除。其中的變量通常是局部變量、函數(shù)參數(shù)等2。堆,也稱為空閑
棧存放的是什么?
在C中,內(nèi)存分為四個區(qū)域,它們是堆、堆棧、靜態(tài)存儲區(qū)和常量存儲區(qū)
1。堆棧是編譯器在需要時分配的變量的存儲區(qū)域,在不需要時自動清除。其中的變量通常是局部變量、函數(shù)參數(shù)等
2。堆,也稱為空閑內(nèi)存區(qū),是在程序執(zhí)行過程中動態(tài)分配的。它最大的特點是動態(tài)的。new分配的內(nèi)存塊不是由編譯器管理的,而是由我們的應用程序控制的。通常,new對應于delete。如果程序員不釋放內(nèi)存塊,程序完成后,操作系統(tǒng)將自動循環(huán)。如果堆對象已分配,但忘記釋放,則會發(fā)生內(nèi)存泄漏。如果對象已釋放,但相應的指針未設置為null,則指針為“懸掛指針”
3。靜態(tài)存儲區(qū)。所有靜態(tài)對象和全局對象都分配到靜態(tài)存儲區(qū)
4。固定存儲區(qū)域。這是一個特殊的儲藏區(qū)。它們存儲的內(nèi)容是常量,不能修改(當然,您可以通過不適當?shù)姆绞叫薷乃⑶矣性S多方法)。常量字符串存儲在靜態(tài)存儲區(qū),并返回常量字符串的第一個地址
順序堆棧即堆棧的順序存儲結構,使用一組具有連續(xù)地址的存儲單元依次存儲從堆棧底部到堆棧頂部的數(shù)據(jù)元素。同時,還附加了一個指針top,以指示堆棧元素的頂部在順序堆棧中的位置。通常使用top=0表示空堆棧。一般來說,初始化空堆棧時,不應限制堆棧的最大容量。更合理的方法是:首先為堆棧分配一個基本的容量,然后在應用過程中當堆??臻g不足時擴展堆棧??斩褩5谋磉_式是s.top==s.base。