在进行C/C++编程时,需要程序员对内存的了解比较精确。经常需要操作的内存可分为一下几个类别:
PS:
每个进程在执行的时候,内核都会给其分配一块内存,称为进程地址空间。
这里面除了固定的代码段(存放代码)、数据段、常量段、bss段等,其他的部分会被堆和栈进行共享
栈部分主要负责保存进程的运行上下文,比如函数调用的参数、返回值,包括上一级的函数入口等等;同时函数中定义的临时变量(auto变量)也保存在栈空间中。当函数结束返回的时候,相应的变量也就失效
堆则主要用于动态内存分配,比如malloc,就是从堆中进行分配内存(当然也可以指定从栈中分配,但是一般比较少见)。从堆中动态分配的内存有个特点,其需要程序主动去释放内存,比如free,如果不进行释放,则会造成内存泄露
原文:http://blog.csdn.net/lf644206005/article/details/45129951