網(wǎng)站首頁 編程語言 正文
值類型和引用類型的區(qū)別 I 數(shù)據(jù)結(jié)構(gòu)中的堆和棧和內(nèi)存中的堆和棧的區(qū)別
作者:Z_hongli 更新時間: 2022-11-14 編程語言值類型和引用類型的區(qū)別 I 數(shù)據(jù)結(jié)構(gòu)中的堆和棧和內(nèi)存中的堆和棧的區(qū)別
- 一、值類型和引用類型
- 二、值類型和引用類型的區(qū)別
- 三、數(shù)據(jù)結(jié)構(gòu)中的堆和棧和內(nèi)存中的堆和棧的區(qū)別
- (一)數(shù)據(jù)結(jié)構(gòu)中的堆和棧
- 1.棧:裝數(shù)據(jù)的桶或者箱子
- 2.堆:一顆倒立的大樹
- (二)內(nèi)存中的堆和棧
一、值類型和引用類型
類型 | 數(shù)據(jù)類型 |
---|---|
值類型 | Int float bool char struct enum |
引用類型 | string class interface delegate array |
二、值類型和引用類型的區(qū)別
- 值類型存儲快,引用類型存儲慢
- 值類型表示實際的數(shù)據(jù),引用類型表示指向存儲在內(nèi)存中數(shù)據(jù)的指針和引用
- 值類型繼承自System.valueType,引用類型繼承自System.Object
- 值類型存儲在棧中,引用類型存儲在堆中
- 棧內(nèi)的內(nèi)存會自動釋放,堆中的內(nèi)存由.NET中的GC自動釋放
三、數(shù)據(jù)結(jié)構(gòu)中的堆和棧和內(nèi)存中的堆和棧的區(qū)別
(一)數(shù)據(jù)結(jié)構(gòu)中的堆和棧
堆和棧都是一種數(shù)據(jù)項按序排列的數(shù)據(jù)結(jié)構(gòu)
1.棧:裝數(shù)據(jù)的桶或者箱子
棧是一種具有后進先出的數(shù)據(jù)結(jié)構(gòu),也就是說后存放的先取,先存放的后取,這就類似于我們要在取放在箱子底部的東西,我們首先要移開壓在它上面的物體。
2.堆:一顆倒立的大樹
堆是一種經(jīng)過排序的樹形數(shù)據(jù)結(jié)構(gòu),每個節(jié)點都有一個值。通常我們所說的堆的數(shù)據(jù)結(jié)構(gòu)是指二叉樹。堆的特點是根節(jié)點的值最小(或最大),且根節(jié)點的兩個樹也是一個堆。由于堆的這個特性,常用來實現(xiàn)優(yōu)先隊列,堆的存取是隨意的,這就如同我們在圖書館的書架上取書,雖然書的擺放是有順序的,但是我們想取任意一本時不必像棧一樣,先取出前面所有的書,書架這種機制不同于箱子,我們可以直接取出我們想要的書。
(二)內(nèi)存中的堆和棧
內(nèi)存中的棧區(qū)處于相對較高的地址
,以地址的增長方向為上的話,棧地址是向下增長的。
棧中分配局部變量空間,堆區(qū)是向上增長的用于分配程序員申請的內(nèi)存空間。另外還有靜態(tài)區(qū)是分配靜態(tài)變量,全局變量空間的。只讀區(qū)是分配常量和程序代碼空間的;以及其他一些分區(qū)。
原文鏈接:https://blog.csdn.net/Z_hongli/article/details/127837494
相關(guān)推薦
- 2022-07-18 Column count doesn’t match value count at row 1
- 2023-01-31 go中make用法及常見的一些坑_Golang
- 2022-07-16 from server (NotFound): pods “XXX“ not found
- 2022-07-15 go使用consul實現(xiàn)服務發(fā)現(xiàn)及配置共享實現(xiàn)詳解_Golang
- 2023-01-12 shell編程時出現(xiàn):未預期的符號?`then'?附近有語法錯誤?或者?:?行?:?`then'問題
- 2022-07-13 C# System.Web.HttpContext.Current.Server.MapPath 報
- 2022-04-24 python使用技巧-文件讀寫_python
- 2023-05-06 pandas中g(shù)roupby操作實現(xiàn)_python
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細win安裝深度學習環(huán)境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支