- 博客(3)
- 收藏
- 关注
原创 C#中堆和栈的区别
<br />一个由c/C++编译的程序占用的内存分为以下几个部分 <br /><br />1、栈区(stack)― 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 <br /><br />2、堆区(heap) ― 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。 <br /><br />3、全局区(静态区)(static)―,全局变量和静态变量的存储是放在一块的,初始化的全局
2011-02-27 22:40:00 441
原创 C#指针类型
<br />操作c#中的指针,是一种编写非托管中的一种技术。<br />c#中指针类型可能是(存储在栈)中的值类型,也可能是(存储在堆)中的引用<br />类型。不过无论是什么类型,基本格式都有一个共同的要求就是必须都是支持非<br />托管的类型或者空类型。<br />(这里顺便提一句,非托管的类型编译依赖系统类型库,而托管的类型依赖CLR中元<br />数据.)<br />在C#中支持非托管的类型包括: sbyte, byte, short, ushort, int, uint,<br />long,
2011-02-27 22:39:00 1583
原创 C#中堆和堆栈的区别
首先堆栈和堆(托管堆)都在进程的虚拟内存中。(在32位处理器上每个进程的虚拟内存为4GB)堆栈stack 堆栈中存储值类型。堆栈实际上是向下填充,即由高内存地址指向地内存地址填充。堆栈的工作方式是先分配内存的变量后释放(先进后出原则)。堆栈中的变量是从下向上释放,这样就保证了堆栈中先进后出的规则不与变量的生命周期起冲突!堆栈的性能非常高,但是对于所有的变量来说还不太灵活,而且变量的生命周期必须嵌套。通常我们希望使用一种方法分配内存来存储数据,并且方法退
2011-02-27 22:37:00 565
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人