1.C#的托管资源和非托管资源
托管资源:一般是指由CLR(Common Languge Runtime)控制的内存资源,这些资源的管理由CLR控制。
非托管资源:不受CLR控制的资源,比如文件流,数据的连接,系统的窗口句柄,打印机资源等。
2.有关GC
是根据程序的需要自动分配和回收的内存的过程。CLR的GC只能释放托管资源。
3.堆和栈的区别
栈是编译期间就分配好的一块连续对的内存,堆是程序运行期间动态分配的内存。
栈保持先进后出原则,是一片的连续的区域由系统自动分配和维护。堆是无序的是一片不连续的内存域。
引用类型总是分配到堆上。值类型和指针总是分配到被定义的地方,不一定总是分派到栈上。
4.值类型和引用类型
值类型只需要一段单独的内存,用于存储实际数据。
引用类型需要两端内存,第一段存储实际数据位于堆上,第二段是引用,指向存储实际数据的位置