zoukankan      html  css  js  c++  java
  • 指针和内存管理



    一、静态内存分配
        在编译时确定大小,程序运行的适当的时候(函数调用)分配确定大小的空间,用完由OS在函数调用结束时统一释放

        优点:无需人工参与,分配效率高
        缺点:内存的浪费,内存使用率低,
                            内存分配只能是按计划分配。

    二、动态内存分配
        在程序运行中确定大小,随时申请,随时释放的内存分配

        优点:节约内存,内存使用率高,能够做到按需分配
        缺点:需要手动管理(申请和释放),分配效率低,
                            分配时可能会失败,失败时要做异常处理。

        动态内存分配的空间在堆中
        作用域:凡是能够找得到该空间的地方
        生命周期:从申请到释放

        风险:
        1、忘记释放,会造成【内存泄漏】
        2、过早释放,会造成【提前释放】
        3、多次释放,会造成【重复释放】

        分配的大小单位是字节
        申请:malloc
            char *p=(char *)malloc(strlen(s)+1);  
        释放:free

    三、全局变量
        定义:定义在函数外面的变量,也叫外部变量
        作用域:所有源文件
        生命周期:整个程序的运行周期

        优点:避免复杂的传参,全局都可访问
        缺点:降低内存使用率;
                            全局都可修改,出错不易定位;
                            增强代码的耦合度

        建议:尽量少用


    练习:
    1、仿照strdup实现一个mystrdup
    2、仿照strcat实现一个mystrcat
        






  • 相关阅读:
    [堆栈]Linux 中的各种栈:进程栈 线程栈 内核栈 中断栈
    [TI-DSP]sysbios的swi
    [库函数]动态库和静态库优缺点比较
    [S32K]GPIO使用
    [S32K]FreeRTOS使用
    [IC]浅谈嵌入式MCU软件开发之中断优先级与中断嵌套
    [S32K144]多通道ADC使用
    三天搭建博客,包括文章迁移
    网站优化的艺术与科学之实战
    网站优化的艺术与科学之工具和基础知识
  • 原文地址:https://www.cnblogs.com/rainwz/p/4589000.html
Copyright © 2011-2022 走看看