教甄◆電腦科專業題庫下載題庫

上一題
在C語言中若是要於程式執行時決定Array的大小,要使用那種變數?
(A)Heap-dynamicvariable
(B)Stack-dynamicvariable
(C)Staticvariable
(D)以上皆非
編輯私有筆記及自訂標籤
答案:A
難度:困難
1F
安身立命 國二下 (2016/03/29 14:03)
http://hatsukiakio.blogspot.tw/2009/04/c-static.html
heap這塊區域的記憶體是由user來決定其增減的,他主要存放所有"new"出來的dynamic variable,也就是在runtime期間請求的記憶體,直得一提的是,java所有object都放在heap裡面,這是為了可以讓GC實現。因為new出來的東西是user請求,他主要回傳一個指標(Pointer),所以相關回收動作也要由user去做,因為系統不會幫user回收new出來的記憶體。系統只會去回收stack上的memory,如果不回收這些new出來的記憶體,而又用不到他就會造成memory...
查看完整內容
2F
安身立命 國二下 (2016/04/17 22:44)
當資訊為動態配置產生,系統會存放在另外一塊空間,稱之為『Heap』(注意這裡的Heap跟資料結構中的Heap不相關,可別會錯意!)。Heap的區塊專收執行期間動態產生的資料,由於為動態產生故結束點無法由系統來掌握,故需使用者自行回收空間。在C++或Java中利用new語法產生的就是動態配置的物件,需存放於heap中。
在 Multithreaded process 的操作系統中,Heap memory、Global variables屬於同一個 Process 的 Thread 共享的。Register values及Stack memory不共享。