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

推荐订阅源

freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
G
Google Developers Blog
Hugging Face - Blog
Hugging Face - Blog
博客园 - 【当耐特】
S
SegmentFault 最新的问题
宝玉的分享
宝玉的分享
博客园 - Franky
博客园_首页
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
WordPress大学
WordPress大学
有赞技术团队
有赞技术团队
月光博客
月光博客
博客园 - 聂微东
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
小众软件
小众软件
Microsoft Security Blog
Microsoft Security Blog
Last Week in AI
Last Week in AI
Vercel News
Vercel News
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
爱范儿
爱范儿
J
Java Code Geeks
博客园 - 叶小钗
Engineering at Meta
Engineering at Meta
阮一峰的网络日志
阮一峰的网络日志

博客园 - 蹲在路边写代码

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).这个运算符称为“间接寻址运算符”(有时称“取消引用运算符”)