網站首頁 編程語言 正文
值類型和引用類型的區別 I 數據結構中的堆和棧和內存中的堆和棧的區別
- 一、值類型和引用類型
- 二、值類型和引用類型的區別
- 三、數據結構中的堆和棧和內存中的堆和棧的區別
- (一)數據結構中的堆和棧
- 1.棧:裝數據的桶或者箱子
- 2.堆:一顆倒立的大樹
- (二)內存中的堆和棧
一、值類型和引用類型
類型 | 數據類型 |
---|---|
值類型 | Int float bool char struct enum |
引用類型 | string class interface delegate array |
二、值類型和引用類型的區別
- 值類型存儲快,引用類型存儲慢
- 值類型表示實際的數據,引用類型表示指向存儲在內存中數據的指針和引用
- 值類型繼承自System.valueType,引用類型繼承自System.Object
- 值類型存儲在棧中,引用類型存儲在堆中
- 棧內的內存會自動釋放,堆中的內存由.NET中的GC自動釋放
三、數據結構中的堆和棧和內存中的堆和棧的區別
(一)數據結構中的堆和棧
堆和棧都是一種數據項按序排列的數據結構
1.棧:裝數據的桶或者箱子
棧是一種具有后進先出的數據結構,也就是說后存放的先取,先存放的后取,這就類似于我們要在取放在箱子底部的東西,我們首先要移開壓在它上面的物體。
2.堆:一顆倒立的大樹
堆是一種經過排序的樹形數據結構,每個節點都有一個值。通常我們所說的堆的數據結構是指二叉樹。堆的特點是根節點的值最小(或最大),且根節點的兩個樹也是一個堆。由于堆的這個特性,常用來實現優先隊列,堆的存取是隨意的,這就如同我們在圖書館的書架上取書,雖然書的擺放是有順序的,但是我們想取任意一本時不必像棧一樣,先取出前面所有的書,書架這種機制不同于箱子,我們可以直接取出我們想要的書。
(二)內存中的堆和棧
內存中的棧區處于相對較高的地址
,以地址的增長方向為上的話,棧地址是向下增長的。
棧中分配局部變量空間,堆區是向上增長的用于分配程序員申請的內存空間。另外還有靜態區是分配靜態變量,全局變量空間的。只讀區是分配常量和程序代碼空間的;以及其他一些分區。
原文鏈接:https://blog.csdn.net/Z_hongli/article/details/127837494
- 上一篇:關于C++解決內存泄漏問題的心得
- 下一篇:C#中的委托、事件與接口
相關推薦
- 2022-12-10 C++中如何將數據保存為CSV文件_C 語言
- 2022-11-10 詳解C++?左值引用與?const?關鍵字_C 語言
- 2022-04-10 解析React?中的Virtual?DOM_MsSql
- 2023-05-14 Python實現批量導入1000條xlsx數據_python
- 2022-05-28 C++?超詳細講解stack與queue的使用_C 語言
- 2023-02-27 python定時任務sched庫用法簡單實例_python
- 2022-05-23 ES6新增關鍵字let和const介紹_基礎知識
- 2022-12-15 Redis分布式鎖如何設置超時時間_Redis
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支