内存
内存可分为4个部分:
代码段(code)
全局变量段(global)
栈(stack):所有在函数内部声明的<局部变量>存在于栈。
堆(heap):动态内存,可以根据用户需要而增加或减少
说明:其他段的大小都是固定的,在编译时就已经决定,在运行时我们不能控制这3个段的内存分配或回收;但是<堆>可以运行时动态增长或减少。
堆
创建内存:用new操作符可在<堆>动态创建内存,但任何创建在堆上的对象都是需要显式回收的,在C语言中使用free操作符,在C++中使用delete操作符。
函数调用:对于每一个函数调用,系统会在<栈>上为其分配内存;当函数调用结束时,这部分的内存就会被系统回收。
任何时候,main()函数都在<栈底>,只有<栈顶>的函数在执行,所有其他函数都会被暂停。程序执行过程中,函数栈将会持续增长和缩小,因为需要为新的函数调用分配内存,函数调用结束时,内存就被回收。