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)不能使用已经被释放的空间;

  • 相关阅读:
    1.4(java学习笔记) 面向对象内存分析
    1.3(java学习笔记)构造方法及重载
    1.2(java学习笔记)类与对象
    1.1(java学习笔记) 面向过程与面向对象
    STM32F0库函数初始化系列:GPIO配置
    STM32F4库函数初始化系列:PWM输出
    STM32F4库函数初始化系列:DMA串口接收
    STM32F4库函数初始化系列:三重ADC——DMA
    STM32F1库函数初始化系列:DMA—ADC采集
    STM32F4库函数初始化系列:串口DMA接收
  • 原文地址:https://www.cnblogs.com/feige1314/p/7216770.html
Copyright © 2011-2022 走看看