Re: [問題] 為何還有結構存在?
就我所知, heap 可以看成一塊亂糟糟的 記憶體
物件的東東都是存在這裡,也就是隨便挖一塊記憶體去放,所以會有很多空格
但是我們以前學的不都是需要一個 SP or BX (忘了是什麼了) 來取得 參數
但是物件需要一個指標,也就是那塊長長的記憶體位置存的都是物件的位址
^^^^^^^^^^^^附註
所以要存取物件的值的話,總共需要存取兩次記憶體。但Stack 裡面只需要32Bit就好
但若宣告的是 Struct 的話,例如 Point ,那麼 x,y 就是直接放在 Stack 裡面
存取的話,直接用暫存器加減X就可以取得了,也就是一次KO~
不知道這樣說的明白嗎?
PS:曾問過我的組語老師,Heap相關問題,他回說:「Heap是什麼?」
所以也有可能 Heap 是GC出來之後的產物
至於 16byte以下用 Struct效率比較好,是在TechEd 2004 聽到蔡學鏞講的~
物件導向的語言 其字串也是放在 Heap 中,所以每次指派才都會多出一塊垃圾記憶體~
但若早期的C, 程式一開始即宣告好的字串就是 Stack了~
動態的話,我想應該也叫做Stack ,因為那時候沒有gc可以幫你回收 ,都要自己free 掉
附註:
長長的記憶體指的是 Code從上面開始,Data從下面開始,以前學組語的那種模型
所以Data太多還會蓋到 Code ,我覺得還滿好笑的~
※ 引述《virdust2003 (替機殼洗個熱水澡)》之銘言:
: 16 byte 以下 struct 比較快
: 因為stack 而不是 heap
: ※ 引述《tomex (tomex_ou)》之銘言:
: : 既然結構(struct)與類別(class)的差別只在預設public及private差別
: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
: 哪裡看到的?
: : 為何c#不通通以class來代替struct呢?
: : 像int, Size(x,y)都是用struct,應該有原因吧?!
--
-----------------------------------------------------------------------------
功課重,Project多的好幫手--專案王
http://steven.twbbs.org/ProjectKing
增加右鍵的威力RightMenuKing--右鍵王
http://steven.twbbs.org/RightMenuKing/
備份重要檔案的好幫BackupKing--備份王
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.113.164.5
※ 編輯: virdust2003 來自: 140.113.164.5 (07/12 14:05)
討論串 (同標題文章)
C_Sharp 近期熱門文章
PTT數位生活區 即時熱門文章