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
        






  • 相关阅读:
    在javaWeb 工程中 tomcat 的 web.xml 文件配置
    Spring 框架详解
    构建工具 Maven和Gradle对比
    idea 创建Javaweb 动态工程
    服务器后端 项目代码常用目录图
    ET模式下的EPOLLOUT
    linux recv 参数len设置为0
    fork 和 exec 对子进程继承父进程处理信号处理函数的影响
    lua元表以及元方法
    Linux网络编程“惊群”问题总结
  • 原文地址:https://www.cnblogs.com/rainwz/p/4589000.html
Copyright © 2011-2022 走看看