Re: [問題] 為何還有結構存在?

看板C_Sharp (C#)作者 (替機殼洗個熱水澡)時間20年前 (2005/07/12 13:56), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串4/7 (看更多)
就我所知, 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)
文章代碼(AID): #12qrk8q- (C_Sharp)
討論串 (同標題文章)
文章代碼(AID): #12qrk8q- (C_Sharp)