1. 程式人生 > >關於堆記憶體和棧記憶體的簡單描述

關於堆記憶體和棧記憶體的簡單描述

棧記憶體:記憶體地址連續,先進來的存放在棧底,所以先進後出,由系統自動分配空間。如:user user;此時,系統已經在棧記憶體中為user分配了空間,現在處於棧頂部,後面再來的會將這個往下推,直到user被推到了最低的記憶體塊,則記憶體佔滿。棧記憶體又稱為靜態記憶體。這個記憶體的大小是固定的。

堆記憶體:記憶體地址不連續,由開發者自行申請、釋放(由於java存在jvm,所以釋放也是自動的;C語言使用free(XX)方法釋放該堆記憶體)。上面的例子,user user;如果只是這樣寫,則只有user這個棧記憶體,堆記憶體中並沒有,當user=new user();或者在C中使用malloc()方法,則此時對記憶體中才有關於user的堆記憶體。這個記憶體的大小是由系統的虛擬記憶體的大小所決定的。