棧頂是向著內(nèi)存低地址方向生長(zhǎng)的,定義一個(gè)棧底是高地址,包括全局變量和常量等,自然和正常的代碼段類似,從低地址往高地址寫,每次壓一個(gè)數(shù)據(jù)入棧,而堆的定義并不像棧那樣嚴(yán)格。堆一般是數(shù)據(jù)段,棧的生長(zhǎng)方向的關(guān)鍵就是棧的定義。
棧又名堆棧,它是一種運(yùn)算受限的線性表。其限制是僅允許在表的一端進(jìn)行插入和刪除運(yùn)算。這一端被稱為棧頂,相對(duì)地,把另一端稱為棧底。向一個(gè)棧插入新元素又稱作進(jìn)棧、入棧或壓棧,它是把新元素放到棧頂元素的上面,使之成為新的棧頂元素。從一個(gè)棧刪除元素又稱作出棧或退棧,它是把棧頂元素刪除掉,使其相鄰的元素成為新的棧頂元素。棧作為一種數(shù)據(jù)結(jié)構(gòu),是一種只能在一端進(jìn)行插入和刪除操作的特殊線性表。它按照先進(jìn)后出的原則存儲(chǔ)數(shù)據(jù),先進(jìn)入的數(shù)據(jù)被壓入棧底,最后的數(shù)據(jù)在棧頂,需要讀數(shù)據(jù)的時(shí)候從棧頂開始彈出數(shù)據(jù)。棧具有記憶作用,對(duì)棧的插入與刪除操作中,不需要改變棧底指針。