C#编程-描述内存分配

描述内存分配

分配给变量的内存通过两种方式引用:值类型和引用类型。内置数据类型,诸如int、char和float都是值雷兴国。当您声明int变量时,编译器会分配一个内存块以保持该整数值。请思考以下语句:

	int Num = 50;

上述语句为保存值50的Num1变量分配内存。
引用类型(如类)由编译器以不同的方式处理。当您声明一个类变量时,编译器不会分配内存块以保持某个类。而是分配一块内存,该内存能够存储对另一个包含该类的内存块的引用。当new关键字用来创建对象时,会为类对象分配。

值类型包含数据,而引用类型包含对存储数据的位置的引用。因此,值类型称作直接类型,而引用类型称作间接类型。下图显示了值类型变量和引用类型变量。

在这里插入图片描述
在上图中,名为Num1的值类型变量具有值5.名为Car的引用类型变量具有到存储值Rolls Royce Phantom的内存位置的值。

要了解值类型引用,请考虑这样一个示例,您将变量Num1声明为int,并且赋予值50。如果您将另一个变量Num2声明为int,并将Num1,Num2将包含于Num1一样的值。但是,两个变量包含值50的不同副本。如果您修改Num1中的值,则Num2中的值不会更改。

以下代码段是值类型变量的示例:

	int Num1 = 50;  //declare and initialize Num1int Num2 = Num1;  //Num2 contains the copy of the data in Num1Num1++;  //incrementing Num1 will have no effect on Num2

下图显示了如何在上例中讲内存分配到值类型变量。

在这里插入图片描述

注释
所有值类型都是在栈上创建的。栈存储器的组织类似于堆在书架上的书。

要了解引用类型,请思考类Car。如果Car类的BWM对象用同一个类中的另一个对象Ford初始化,那么Ford和BWM都将引用相同的位置。

以下代码是引用类型变量的示例:

	using System;namespace Ref_Type{class class1{static void Main(string[] args){Car Ford = new Car();Ford.Model = 10();Car BMW = Ford;BMW.Display_Model();Ford.Display_Model();}}class Car{public int Model;public void Display_Model(){Console.WriteLine(Model);}}}

在这里插入图片描述

注释
所有的引用类型都是在堆上创建的。堆存储器类似于在一行中一本本排列的书。

除了内置数据类型(例如:int和float),还有其他的值类型(例如:结构和枚举),它们是用户定义道德数据类型。类似地,还有各种引用类型,例如,数组和集合。

小问题:
所有引用类型均在______上创建。
答案:Heap

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/598424.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

API 安全设计的建议

1、使用 HTTPS 现在的 Web 已经不是之前那个年代,标准的 HTTP 满足不了 Web 安全需求。而各大浏览器供应商开始标记不使用安全层的 URL,你的 API 也可以考虑开始动手做这件事——用 HTTPS。HTTPS 采用传输层安全性协议(TLS)对传输…

kubernetes(二)创建集群

kubernetes(一)概述与架构 云原生实战 语雀 官网 Kubernetes 文档 | Kubernetes 更新:移除 Dockershim 的常见问题 | Kubernetes B站课程:https://www.bilibili.com/video/BV13Q4y1C7hS/?p26 安装版本说明: 视频教程…

【nginx】linux(centos版本)安装nginx

目录 一、下载安装包1.1 官网下载1.2 linux命令下载 二、安装2.1 安装依赖包2.2 安装nginx 三、启动四、访问五、关停六、重载配置 一、下载安装包 1.1 官网下载 1.官网地址 https://nginx.org/en/download.html2.版本说明 1.Mainline version-主线版本 2.Stable version-稳…

LeetCode 2487. 从链表中移除节点:单调栈

【LetMeFly】2487.从链表中移除节点:单调栈 力扣题目链接:https://leetcode.cn/problems/remove-nodes-from-linked-list/ 给你一个链表的头节点 head 。 移除每个右侧有一个更大数值的节点。 返回修改后链表的头节点 head 。 示例 1: 输…

聊一聊 .NET高级调试 内核模式堆泄露

一:背景 1. 讲故事 前几天有位朋友找到我,说他的机器内存在不断的上涨,但在任务管理器中查不出是哪个进程吃的内存,特别奇怪,截图如下: 在我的分析旅程中都是用户态模式的内存泄漏,像上图中的…

openlayer 轨迹动画(方式一)使用ol-ext

ol-ext官方示例地址&#xff1a;ol-ext 示例代码 实测可用 <!DOCTYPE html> <html><head><meta http-equiv"Content-Type" content"text/html; charsetutf-8" /><title>点沿线动画</title><!-- Openlayers -->…

使用pnnx将Torch模型转换为ncnn

1. 引言 以往我们将Torch模型转换为ncnn模型&#xff0c;通常需经过Torch–>onnx&#xff0c;onnx–>ncnn两个过程。但经常会出现某些算子不支持的问题。 ncnn作者针对该问题&#xff0c;直接开发一个Torch直接转换ncnn模型的工具 (PNNX)&#xff0c;以下为相关介绍及使…

Linux端口转发的几种常用方法

1. SSH 端口转发 SSH 提供了一个非常有意思的功能&#xff0c;就是端口转发&#xff0c;它能够将其他 TCP 端口的网络数据通过 SSH 链接来转发&#xff0c;并且自动提供了相应的加密及解密服务。 (1) 本地端口转发 ssh -fgN -L 2222:localhost:22 localhost (2) 远程端口转…

java查询结果的处理

java查询结果的处理 为了方便使用sql的数据&#xff0c;在查询后mysql会把数据封装到java里面的resultset对象&#xff0c;然后我们需要把resultset里的数据再封装到我们自己创建的对象中&#xff0c;比如Student对象&#xff1a; public class Student {int number;String n…

超快速排序

title: 超快速排序 date: 2024-01-05 11:51:43 tags: 逆序对 categories: 算法进阶指南 题目大意 解题思路 逆序数是一个序列每一个数的左边有多少比他本身大的值。将一个序列排序完整&#xff0c;最小交换次数即是逆序数之和。使用归并排序的同时&#xff0c;将每一个逆序数求…

C#用StringBuilder高效处理字符串

目录 一、背景 二、使用StringBuilder便捷、高效地操作字符串 三、实例 1.源码 2.生成效果 四、实例中知识点 1.StringBuilder类 &#xff08;1&#xff09;构造函数 &#xff08;2&#xff09;属性 &#xff08;3&#xff09;方法 2.Environment.NewLine 属性 一、…

SurfaceView和TextureView理解相关

一、为什么要使用SurfaceView 我们知道View是通过刷新来重绘视图&#xff0c;系统通过发出VSSYNC信号来进行屏幕的重绘&#xff0c;刷新的时间间隔是16ms,如果我们可以在16ms以内将绘制工作完成&#xff0c;则没有任何问题&#xff0c;如果我们绘制过程逻辑很复杂&#xff0c;…

SSD 颗粒还要涨价50%,入手前小心速度陷阱

大伙应该感受到了&#xff0c;自今年年中开始 SSD 普遍开始了小幅涨价。 但即便涨价到现在&#xff0c;NAND 厂商仍属于倒亏状态... 原因很简单&#xff0c;库存太多。 根据 TrendForce 的报道&#xff0c;主要制造商价格将需要再次上涨 40% 以上才能不亏&#xff0c;而达到盈…

【ZYNQ入门】第五篇、AXI HP口读写数据原理

目录 第一部分、AXI总线的相关知识 1、ZYNQ架构 2、AXI 总线和 AXI 接口以及 AXI 协议 3、AXI 总线与 ZYNQ 的关系 4、AXI 总线介绍 5、AXI 接口介绍 6、AXI 协议介绍 7、AXI高效传输的原因 8、常见总线汇总 9、HP接口写时序配置 10、HP DDR的地址分配 11、缓存一…

QT开源类库集合

QT开源类库集合 一、自定义控件 QSintQicsTableLongscroll-qtAdvanced Docking System 二、图表控件 QwtQCustomPlotJKQTPlotter 三、网络 QHttpEngineHTTP 四、 音视频 vlc-qt 五、多线程 tasks 六、数据库 EasyQtSql 一、自定义控件 1. QSint 源代码地址&#xff1a;QSint&…

如何缓解BOT攻击?分享灵活准确的防御之道

BOT流量在所有互联网流量中的占比过半&#xff0c;而且存在好坏之分。其中“好”的BOT&#xff0c;比如在互联网上搜索和查找内容的BOT&#xff0c;它们是我们不可或缺的帮手。恶意的BOT进行信息数据爬取、薅羊毛等攻击行为&#xff0c;正损害着企业和用户的利益。专业数据统计…

将文本文件导入Oracle数据库的简便方法:SQL Developer

需求 我有一个文本文件dbim.txt&#xff0c;是通过alert log生成的&#xff0c;内容如下&#xff1a; 2020-09-11 2020-09-11 ... 2023-12-03 2023-12-03 2023-12-26我已经在Oracle数据库中建立了目标表&#xff1a; create table dbim(a varchar(16));我想把日志文件导入Or…

Java IO 流面试题

1. Java 中有几种类型的流&#xff1f;JDK 为每种类型的流提供了哪些抽象类以供继承&#xff1f; 参考答案 基础流可以分为&#xff1a;字节流&#xff0c;字符流。字节流继承于 InputStream、OutputStream 抽象类&#xff0c;字符流继承于 Reader 和 Writer 抽象类。在 java.…

若依管理系统部署

本文章仅供参考&#xff0c;由于个软件版本不同可能会有偏差。 登录系统打开cmd 编辑文件 这些文件分别打开&#xff0c;打开后在浏览器会出现若依管理系统后台&#xff0c;输入账号 admin 密码 123456即可进入后台。 本文章仅供参考&#xff0c;由于个软件版本不同可能会有…

Linux内存管理:(六)页交换算法

文章说明&#xff1a; Linux内核版本&#xff1a;5.0 架构&#xff1a;ARM64 参考资料及图片来源&#xff1a;《奔跑吧Linux内核》 Linux 5.0内核源码注释仓库地址&#xff1a; zhangzihengya/LinuxSourceCode_v5.0_study (github.com) 1. 引言 在Linux操作系统中&#x…