C#内存管理

来源:互联网 发布:中国地图绘制软件 编辑:程序博客网 时间:2024/05/21 02:34

            一个程序集的内容在内存中应该被分为两个部分进行存放:代码和数据。一般CPU都会把数据和代码放到两个相对隔离的内存区域,这样能保证安全和便于管理。哈弗体系结构的计算机,数据存储器和代码存储器都是物理分开的。(到现在没有看到有书或视频讲这个问题,只是根据我汇编语言和C语言的知识做此推测。)代码被加载到代码区,包括类的方法和构造函数。数据被加载到数据区。

    当程序集刚被加载到内存中时,只有代码占用了内存空间,在代码区。数据要等代码执行后才会分配相应的内存空间,值类型的被放到栈上,引用类型的被放到堆上。值类型并不是都被分配到栈上的,如果一个类的成员变量是值类型的,那么这个成员变量应该被分配到堆上。

            以上为个人见解,欢饮大家拍砖。

    问题一:所有进程都共用一个堆和栈吗?

原创粉丝点击