摘要:
以运行库为目标的代码称为托管代码
C++分成两种,一种是托管C++,另外一种是非托管C++
C#是以运行库为目标设计的,因此用C#编写的代码基本上为托管代码
不以运行库为目标的代码称为非托管代码
.NET提供了与非托管代码互操作的服务,比如与COM互操作的Interop服务
.NET平台在内存管理方面提供了GC(Garbage Collection),负责自动释放托管资源和内存回收的工作,但它无
法对非托管资源进行释放,这时我们必须自己提供方法来释放对象内分配的非托管资源,比如你在对象的实现代
码中使用了一个COM对象。
阅读全文
摘要:
2. C#提供一个的关键字stackalloc用于申请堆栈内存。注意,这个申请内存分配的是栈内存,当函数执行完毕后,内存会被自动回收。不过我想用这个栈内存基本可以解决40%的问题,而且使用的时候不必担心内存泄漏问题。
3. .net 好像不直接支持堆内存的申请(这个对.net来说很危险),不过我们可以通过调用win32 api 的方法进行申请。这样就可以解决剩下40%的问题。堆内存申请的方法在MSDN里面有相关的文档。
4. 结构体是一个特殊的对象。他与类的定义就差一个关键字,使用方法也和类一样,可以定义属性,可以定义方法。但是在进行指针操作的时候双方就有很大的差别了。结构体可以通过sizeof()取得大小,大小与结构体里有多少实体变量有关,但是如果struck里定义了类的对象,或者指针,sizeof可能会编译不过(void* 的空指针例外,不过需要在结构体声明处加上unsafe)。
5. fixed关键字:fixed()会告诉垃圾收集器,类实例的某些成员有指向他们的指针,所以这些实例不能移动目前了解的不多,不过有一个很实用的例子可以让指针能够和.net里的数组进行交互操作: 阅读全文
摘要:
程序集链接器 (Al.exe) ASP.NET 编译工具 (Aspnet_compiler.exe) ASP.NET 浏览器注册工具 (Aspnet_regbrowsers.exe) ASP.NET IIS 注册工具 (Aspnet_regiis.exe) ASP.NET SQL Server 注册工具 (Aspnet_regsql.exe) Windows 窗体 ActiveX 控件导入程序 (... 阅读全文