内存分配浅析

2017-11-29  本文已影响41人  夕阳下的不回头

程序的内存存储的内容如图所示

静态存储区主要分配全局变量和静态变量

从栈上分配:

栈上存放函数参数值 局部变量值等 在执行函数调用时 系统在栈上自动为函数内部的局部变量及形参分配内存,函数执行结束时,自动释放这些内存。

从堆上分配:

在程序运行期间,用动态内存分配函数来申请的内存都是从堆上分配的,动态内存的生存期由程序员自己来决定。

动态内存分配函数void* malloc (unisigned int n)  申请n个字节的内存空间

常用的方式例如 int *p=(int*)malloc(10*sizeof(int));//申请了10个int型的空间 也就是10个int大小的整型动态一维数组

calloc(int number, int n) 申请number*n大小字节的空间

栈向下生长 这个下指的是低地址端    而堆是向上生长  这个上指的是高地址端(这玩意和图片无关哈)

另外 栈的空间比较小 是M级  而堆比较大 是G级  所以当我们申请大容量的内存时还是使用堆

上一篇下一篇

猜你喜欢

热点阅读