none
栈 ,堆, 入栈,出栈都是什么意思?有什么用处呢? RRS feed

  • 问题

  •     亲爱的朋友们:

              晚上好

              在C#程序设计,经常会提到栈和堆这两个词。那么我的问题是?

               1)C#中的栈是个什么意思?就像生活中的客栈吗?

               2)C#中的堆是个什么意思?

               3)我经常看书或者听别的计算机高手经常说入栈,出栈。那么入栈是什么意思?出栈又是什么意思呢?

    以上3点,请指点下哦,谢谢。

    2017年5月25日 11:07

答案

  • Hi 绿绿山水,

    首先我们要知道不仅仅只有C#有堆栈的概念,C/C++也是有的。

    对于栈,在调用C代码之前(或者简单的说,在调用main函数之前,如果main函数是你第一个高级语言写的函数,相对于汇编代码)。

    这个栈是必须要设置的,在你的代码从汇编代码到C函数或者C#函数之前。 栈是用来存储临时变量,比如函数内部,定义的变量。

    堆:在从汇编代码到C语言代码,就没有那么重要,相对栈来说,因为堆就是用来存储数据的,用来存储你使用new 或者malloc 出来的内存空间。

    在函数的调用,注销,堆没有太大的作用。

    Best Regards,

    Hart


     如果你的问题解决了,请及时标记有用的回复作为答案,这样会帮助遇到相同问题的人。




    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2017年5月26日 7:05
    版主

全部回复

  • 需要找数据结构的书,理解栈stack和堆heap的含义和用途

    这两者都是变量存储的区域,简单的理解,stack是临时变量存储区域,heap是由GC负责分配与回收的内存管理单位,

    参考一下Windows的进程运行时分配的4G内存空间图,有一块内容就是stack和heap的。


    专注于.NET ERP/CRM开发框架,C/S架构,SQL Server + ORM(LLBL Gen Pro) + Infragistics WinForms

    2017年5月26日 0:08
  • Hi 绿绿山水,

    首先我们要知道不仅仅只有C#有堆栈的概念,C/C++也是有的。

    对于栈,在调用C代码之前(或者简单的说,在调用main函数之前,如果main函数是你第一个高级语言写的函数,相对于汇编代码)。

    这个栈是必须要设置的,在你的代码从汇编代码到C函数或者C#函数之前。 栈是用来存储临时变量,比如函数内部,定义的变量。

    堆:在从汇编代码到C语言代码,就没有那么重要,相对栈来说,因为堆就是用来存储数据的,用来存储你使用new 或者malloc 出来的内存空间。

    在函数的调用,注销,堆没有太大的作用。

    Best Regards,

    Hart


     如果你的问题解决了,请及时标记有用的回复作为答案,这样会帮助遇到相同问题的人。




    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2017年5月26日 7:05
    版主