C#高级编程学习笔记--------内存管理和指针

本章概要:

1.后台内存管理

值数据类型。引用数据类型。垃圾收集 ,释放未托管的资源(析构函数,IDISPOSABLE接口,实现该接口和析构函数)

不安全代码(unsafe),指针,使用指针优化性能

--------------------------------------------------------------------------------------------------------

分配内存方式:堆栈向上 堆向下

不希望指定他指向数据类型时候用VOID指针

结构指针:条件(结构不能包含任何引用类型)

类指针成员:不能创建任何指向类的指针,垃圾收集起不维护指针任何信息,只能维护所引用的信息,因此创建指向类的指针会使得垃圾收集器不能正常工作;但是由于大多数类都包含值类型的成员,可以为这些之类型成员城建指针,但是这需要一种特殊的语法(FIXED),X和f都是非托管资源,他们方在一个对象中存放在堆上,在垃圾收集的过程中,垃圾收集器会吧myclass移动到内存的一个新单元上,这样指针pl.pf就指向错误的内存地址,所以不能用这个方式(Myclass Myobject=new Myclass(); long *pl=&(myobject.x);pf=&(myobject.f);)只能通过FIXED告诉编垃圾收集器,类的实例的某些成员有指向他们的指针,在FIXED代码段内这些实例不能移动

例:

class

{

public long x;

public float f;

}

Myclass Myobject=new Myclass();

fixed(long *pObject=&(MyObject))

{

//do something here

}

你可能感兴趣的:(编程,优化,工作,C#,Class,float)