• 内存管理


    内存管理

      c语言的内存分两种:静态内存,动态内存

     

    静态内存

      静态内存包括 栈区,数据区,代码区

      [特点] 

        <1>静态内存,由系统进行分配 who

        <2>静态内存的大小在程序运行之前就可以确定 when

        <3>静态内存是在 栈区,数据区,代码区 进行分配的 where

        <4>静态内存,由系统进行释放 who

     

    动态内存

      动态内存,堆区

      [特点]

        <1>动态内存,由程序员手动写代码进行分配 who

        <2>动态内存,内存大小/内存分配动作,必须在程序运行时才能确定 when

        <3>动态内存,是在 堆区 进行分配的 where

        <4>动态内存,由程序员手动写代码进行释放 who

     

    堆内存分配 memory alloc

        void *malloc(size_t);
        //malloc的参数,表示所要分配的堆内存的大小(以字节为单位)
        //malloc的返回值,返回的是成功分配的内存的首地址

        [] 因为,返回的这个地址可能是任意大小内存的首地址,所以返回值类型为一个泛型指针类型

     

    堆内存释放 free 

        void free(void *);
        //传入所要释放堆内存的首地址,释放对应的堆内存
        //同一个堆内存,不能多次释放,多次释放会导致程序崩溃
        //堆内存不进行释放,会导致内存泄露
        //对于一个长时间运行的应用程序来说,内存泄露会导致系统的[可用内存]变少,应用反应迟钝,卡

    //对于一个短时间运行的应用程序来说,内存泄露可以忽略.因为程序结束时,未及时释放的堆内存,也会被系统释放

  • 相关阅读:
    jQueryMobile(二)
    (六)JavaScript之[Regular Expression]与[错误(try, catch, throw)]
    18-metaclass,是潘多拉魔盒还是阿拉丁神灯?
    17-强大的装饰器
    15-Python对象的比较、拷贝
    13-搭建积木:Python模块化
    12-面向对象(下):如何实现一个搜索引擎?
    11-面向对象(上):从生活中的类比说起
    10-简约不简单的匿名函数
    09-不可或缺的自定义函数
  • 原文地址:https://www.cnblogs.com/firstsky/p/5892318.html
Copyright © 2020-2023  润新知