转 -内存的四个区域

内存四个区域的介绍与使用方法


一:代码区 code


        程序被操作系统加载到内存时,所有可执行的代码被加载到代码区,也叫代码段,
        程序运行这段时间该区域数据不可被修改只可以被执行。


二:静态区     


         程序被加载到内存时就已经分配好,程序退出时才从内存中消失。

         存储静态变量和全局变量。代码执行期间一直占用内存!

三:栈区     


         一种先进后出的存储结构,所有的自动变量(auto修饰的相当于局部变量),

         函数的参数,函数的返回值都是栈区变量。不需要用户申请释放,编译器自动完成。

四:堆区  heap 


          一个比较大的内存容器(比栈大),需要我们手动的申请和释放内存。

          堆区内存的使用函数:头文件#include <stdlib.h> 

1:malloc 申请堆区内存。    

        void *  malloc(size_t  size);   

        size为申请的内存的字节数。申请的空间随机不会初始化, 所以不知道内部值是多少。

2:free  释放申请的内存。

          free(void *ptr);

          只能释放你申请的内存,不然就会出错。

3: calloc  申请堆区内存。

            void *calloc(size_t nmemb, size_t size); 

            nmemb:指定单位的数量,size;单位的数量。

           例子:malloc(10*sizeof(int));  ==  calloc(10,sizeof(int));
           区别:malloc申请的内存不负责初始化,而calloc申请的内存已经初始化为0.

4:realloc   可以扩大之前申请的内存

             void *realloc(void *ptr, size_t size);

             ptr 要扩充的区域地址,size 扩充之后的大小。

             例子:char *a=(char *)malloc(10*sizeof(char));//10个字节

             realloc(a,100);//增加为100个字节,也不会初始化。
--------------------- 
作者:若水001 
来源:CSDN 
原文:https://blog.csdn.net/qq_41799143/article/details/80678967 
版权声明:本文为博主原创文章,转载请附上博文链接!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值