c#中内存管理与不安全代码是什么
导读:本文共2702.5字符,通常情况下阅读需要9分钟。同时您也可以点击右侧朗读,来听本文内容。按键盘←(左) →(右) 方向键可以翻页。
摘要: ***************************************内存管理**********************************************************===================================栈:1,存储着值类型(方法的参数存储在栈中)2,高性能3,生存周期必须嵌套(缺点)结构是值类... ...
目录
(为您整理了一些要点),点击可以直达。***************************************内存管理**********************************************************
===================================栈:
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#中内存管理与不安全代码是什么的详细内容,希望对您有所帮助,信息来源于网络。