c#中内存管理与不安全代码是什么(云服务器、云主机、高防IP、高防服务器、香港服务器、美国服务器,编程语言)

时间:2024-05-04 15:32:31 作者 : 石家庄SEO 分类 : 编程语言
  • TAG :

    c%23%E4%B8%AD%E5%86%85%E5%AD%98%E7%AE%A1%E7%90%86%E4%B8%8E%E4%B8%8D%E5%AE%89%E5%85%A8%E4%BB%A3%E7%A0%81%E6%98%AF%E4%BB%80%E4%B9%88

***************************************内存管理**********************************************************

===================================栈:
1,存储着值类型(方法的参数存储在栈中)


2,高性能


3,生存周期必须嵌套(缺点)

结构是值类型,存储在栈中。结构实例化(new)不会在栈中分配空间

===================================托管堆(与传统的堆相比有很显著的优势):

1,存储着引用类型(对象成员的值类型也存储在堆上)


2,可以对数据的生存周期进行强大的控制


3,建立引用变量的过程比建立值变量的过程复杂,性能开销大

===================================析构函数(必须有垃圾回收器调用):


1,垃圾回收器销毁对象之前执行


2,c#无法确定垃圾回收器何时执行,不能在析构函数中放置 需要在某一时刻执行的代码


3,c#析构函数的实现,会延迟对象从内存中销毁的时间。


4,频繁使用析构函数,对性能会有影响

===================================垃圾回收器

System.GC.Collect();//强制对所有代进行垃圾回收
System.GC.SuppressFinalize(object);//不掉用对象的终结器(析构函数)

***************************************不安全代码**********************************************************

===================================1,用unsafe关键字编写不安全代码

//配置:选中项目反键->属性->生成->勾选允许不安全代码

===================================2,指针的语法

===================================3,将指针强制转化为整数类型

//只能转化为uing、long、ulong类型

===================================4,指针类型的强制装换

===================================5,void指针(不指向任何数据类型的指针)

===================================6,指针算数的运算(不允许对void指针进行运算)

p+x*(sizeof(T))
p:指针的地址
x:加上的数值
T:类型的大小

===================================7,sizeof运算符(只能求出值类型的大小)

===================================8,结构指针:指针成员访问运算符

①指针不能只想任何引用类型
②结构里面不能包含引用类型

===================================9,类成员指针

===================================有趣的实验

本文:c#中内存管理与不安全代码是什么的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:c语言如何实现贪吃蛇玩法下一篇:

8 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18