惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

WordPress大学
WordPress大学
博客园 - 司徒正美
宝玉的分享
宝玉的分享
阮一峰的网络日志
阮一峰的网络日志
The Cloudflare Blog
月光博客
月光博客
博客园 - 【当耐特】
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
博客园 - 三生石上(FineUI控件)
博客园 - 聂微东
小众软件
小众软件
Hugging Face - Blog
Hugging Face - Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
Apple Machine Learning Research
Apple Machine Learning Research
V
V2EX
Jina AI
Jina AI
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
罗磊的独立博客
雷峰网
雷峰网
博客园 - 叶小钗
量子位
IT之家
IT之家

博客园 - 蹲在路边写代码

8000401a错误解决方案(Office Word,Excel,PowerPoit应用程序无法访问) SQL Server 2005 无法删除用户的解决方法 遍例指定目录及子目录下的所有文件添加进数据库 改善SQL语句的效率的几条原则,不断积累中 一些常用的WebServices 转Javascript的IE和Firefox兼容性汇编 - 蹲在路边写代码 - 博客园 转--使用 Request.QueryString 接受参数时,跟编码有关的一些问题 - 蹲在路边写代码 IE的showModalDialog与FireFox的window.open 父子窗口传值示例 三种常见选项卡效果 - 蹲在路边写代码 - 博客园 C#高级编程学习笔记(五)字符串与正则表达式 SQL SELECT 语句完整的执行顺序 C#高级编程学习笔记(三)委托和事件 C#高级编程学习笔记(二)运算符和类型转换 C#高级编程学习笔记(-)C#基础 对象和类型 继承 构造函数和析构函数的原理及在C#中的运用(转载) CSS在IE与Firefox下的兼容性 CSS Hack 汇总 .NET的ORM工具SubSonic2.03的配置 ASP.NET的页面间传值方法 - 蹲在路边写代码 - 博客园
C#高级编程学习笔记(四) 内存管理和指针
蹲在路边写代码 · 2008-03-29 · via 博客园 - 蹲在路边写代码

七、内存管理和指针

1、后台内在管理
2、释放未托管的资源
在定义一个类时可以使用两种机制来自动释放资源:
    声明一个析构函数(或终结器),作为类的一个成员。
    在类中实现System.IDisposable接口
析构函数:类似于一个方法,但前面加~。没有返回类型,不带参数,没有访问修饰符。
C#编译器在编译析构函数时,会隐式地把析构函数的代码编译为Finalize()方法的对应代码,确保执行父类的Finalize()方法。
C#析构函数执行会延迟对象最终从内存中删除的时间。因为没有析构函数的对象会在垃圾收集器的一次处理中从内存中删除,但有析构函数的对象需要两次处理才能删除:第一次调用析构函数时,没有删除对象,第二次调用才真正删除对象。可参考浅谈C#的垃圾回收之引子:关于二次回收机制、析构函数、Dispose、and Finalize etc.. (http://www.cnblogs.com/sban/archive/2007/12/02/978737.html)
IDisposable接口:C#中推荐使用System.IDisposable接口替代析构函数
3、不安全的代码
C#只允许标记unsafe的代码使用指针。
C#中,*符号与类型有关,C++中,*与变量名相关。如int* px,py对应于C++中的int *px,*py
&表示“取地址”,并把一个值类型转换为指针,例如int转换为*int.这个运算符称为寻址运算符。
*表示“获取地址的内容”,把一个指针转换为值数据类型(例如*float转换为float).这个运算符称为“间接寻址运算符”(有时称“取消引用运算符”)