请问堆和栈有什么区别?内存管理的方法有什么不同?

解决方案 »

  1.   

    stack是每个程序的stack,从每个程序空间的顶部(或称为尾部)向下生长。
    heap又称为全局堆,要向系统申请。
    所以程序结束后,stack中的东东就自动消失拉。
    而heap是属于系统的,你只有主动去申请free,才会消失拉。
      

  2.   

    栈是stack每个程序结束后会自动释放.堆相反属于系统,不能自动释放
      

  3.   

    堆和栈是内存中的不同区域
    CDialog m_dlg;//定义的这个变量是在栈空间上分配内存的,当这个变量的作用域结束时,空间被自动释放CDialog *p = new CDialog()
    这个对话框变量所占内存是在堆上分配的,当变量的作用域结束时,所占空间不会自动释放掉
    需要手工来释放(用delete)上面举了一个例子,希望楼主能理解!