美文网首页
内存分配浅析

内存分配浅析

作者: 夕阳下的不回头 | 来源:发表于2017-11-29 08:51 被阅读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级  所以当我们申请大容量的内存时还是使用堆

相关文章

  • 内存分配浅析

    程序的内存存储的内容如图所示 静态存储区主要分配全局变量和静态变量 从栈上分配: 栈上存放函数参数值 局部变量值等...

  • 浅析Java内存分配

    线程共享区域:方法区,堆线程私有区域:程序计数器,本地方法栈,虚拟机栈 虚拟机栈 线程私有,生命周期与线程一致。每...

  • Java 内存分配浅析

    0. 引言: 本文将由浅入深详细介绍Java内存分配的原理,以帮助新手更轻松的学习Java。这类文章网上有很多,但...

  • Block 原理浅析

    Block 浅析 一、Block内存 (堆、栈、全局) 知识点: 栈区(stack)— 由编译器自动分配释放 ...

  • Java内存分配全面浅析

    本文将由浅入深详细介绍Java内存分配的原理,以帮助新手更轻松的学习Java。这类文章网上有很多,但大多比较零碎。...

  • 动态内存分配浅析2

    这里特别说明 void * 并不是说是空指针 而是说 这个指针是通用型的或者是无类型的 使用的时候 把它转换成啥类...

  • Java 内存分配-全面浅析2

    文章引自:https://www.cnblogs.com/lipeineng/p/8358823.html jav...

  • Java 内存分配-全面浅析1

    文章引自:https://blog.csdn.net/shimiso/article/details/859556...

  • 《C语言》malloc函数使用

    动态分配、静态分配 静态分配:计算机随机自动分配内存,周期结束后自动释放内存动态分配:手动分配内存,手动释放内存 ...

  • (二)C语言之动态内存分配

    (二)C语言之动态内存分配 一、静态内存分配 定义是指定分配的内存长度就是静态内存分配,是在栈内存中分配 二、C语...

网友评论

      本文标题:内存分配浅析

      本文链接:https://www.haomeiwen.com/subject/sqaybxtx.html