进程在内存中的分配

进程在内存的分配包括代码段、data段、.bss段、heap段和stack段。在Linux环境下,C程序中,alloc函数从栈分配内存并自动释放,malloc和calloc从堆分配内存,calloc额外进行初始化,realloc则用于调整已分配内存的大小。
摘要由CSDN通过智能技术生成

   进程在内存中的分配主要有5个部分,代码段,data段,.bss段,heap段,stack段

    在linux系统中,程序在内存中的分布如下所示:

  
低地址.text.data.bss            heap(堆)      -->      unused   <--      stack(栈)      env高地址
其中代码段存放的是程序的源代码,data段存放的是已经初始化的全局变量,bss段存放的是为初始化的全局变量,heap段保存动态分配的内存地址,比如c通过malloc申请的地址,或c++中通过new获取的地址;stack用于函数调用,存放函数参数,临时变量,返回地址等。

在c程序中alloc函数从栈空间获取内存,返回是自动释放;

malloc函数是从堆空间获取内存;

calloc函数和malloc基本一致,不同的是calloc函数会将申请到的内存初始化为0;

relloc函数是重新分配内存,可以改变申请到的内存的大小。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值