zoukankan      html  css  js  c++  java
  • 内存管理(malloc和free的用法)

    内存管理

      1.堆和栈的区别:

        1》栈的特征

          1)、执行的速度相对较

          2)、空间较

          3)、生存期由系统决定

          4)、作用域较

          5)、有名空间,可以通过变量名或者数据名访问

        2》堆的特征

          1)、执行的速度相对较

          2)、空间较

          3)、生存期由“自己”决定,malloc申请,free释放;

          4)、作用域很大(整个程序都可以访问);

          5)、无名空间,只能通过指针使用

      

      2.如何对堆空间申请

        1》申请空间

          #include <stdlib.h>

          void *malloc(size_t size);

          功能:在堆中申请空间

          size:要申请的空间的大小(字节数)      

          返回值类型:void * 该类型表明malloc返回的地址空间中的数据类型是不确定,必须经过强制类型转换才可以使用。

          返回值:成功时,返回malloc申请的空间的起始地址,失败时,返回NULL。

          特点:----》malloc申请的空间为连续空间;

             ----》malloc申请的是没有初始化的空间;

          

          void *calloc(size_t nmemb, size_t size);

          特点:----》申请的空间是连续的;

             ----》申请的是已初始化的空间;

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

        

         2》释放空间

            #include <stdlib.h>

            void free(void *ptr);

            参数ptr:

                1)不能传NULL;

                2)不能给ptr传申请的空间的一部分,例如:

                3)不能释放已经被释放的空间;

                4)不能使用已经被释放的空间;

  • 相关阅读:
    通过IMM With Remote Console为服务器安装操作系统
    linux下编译安装php5.6出现 configure: error: Cannot find MySQL header files under /usr/local/mysql.
    5700交换机清除配置
    嵌入式驱动解析:从串口驱动到Linux驱动模型
    Win10自带Ubuntu子系统的安装与配置
    关于嵌入式C代码优化的几种方法
    2020软考高级系统分析师,你想知道的全在这
    libpng warning: iCCP: known incorrect sRGB profile
    pycharm中导入pygame库失败及解决办法
    pycharm中导入pygame等第三方库
  • 原文地址:https://www.cnblogs.com/feige1314/p/7216770.html
Copyright © 2011-2022 走看看