20 March 2013
  • 全局变量和static变量从静态存储区(static)分配。内存在编译阶段就已经分配好了。其中,初始化过的全局变量和static变量存放在.data区;未初始化的全局变量和static变量存放在.bss区,该区的变量值均为0。在程序整个生命周期中都会存在。
  • 局部变量、形参在堆栈(stack)上分配。在函数调用过程中进行分配,函数返回后自动释放。其生命周期在其作用域内。
  • 通过newdeletemallocfree动态分配到堆(heap)。由程序员来管理其生命周期。C++STL中的vector是动态分配内存,所以分配在堆中。如果分配内存之后并没有进行释放,改内存会一直被占用,知道程序结束,导致内存泄漏。

原文链接:内存分配方式,转载请注明来源!

EOF