• c语言中的内存管理(重点:动态内存申请释放,野指针,指针函数)


    内存分布:
    代码区
    全局变量与静态变量区(全局变量,字符串常量等)
    局部变量区(栈区)(自动分配,自动回收)
    动态存储区(堆区)

    动态内存
    1.内存申请malloc要注意:
         1)参数:要申请空间的大小
         2)返回值:void * 
         3)要加出错判断
    2.内存释放free要注意:
         1)释放的一定是起始地址
         2)释放内存的一部分是不允许的
         3)不能重复释放
         4)防止内存泄露

    野指针的出现情况:
         1)指针变量没有初始化
         2)p在free之后,没有设置为NULL,让人认为是合法的指针。
         3)指针操作越界了

    杜绝野指针:
         1)指针变量要初始化,如 int *p = NULL;
         2)free之后,设置为NULL。如 free(p);p = NULL;
         3)指针操作不越界(检查目标空间的长度)

    指针函数:返回值是地址(指针)的函数。
    指针函数应该返回什么样的地址?
         1)静态存储区中的地址:
              a)全局变量地址
              b)static修饰的局部变量
              c)字符串常量的地址
         2)堆区的地址
         3)函数的参数是指针,可返回
  • 相关阅读:
    【Alpha阶段】第四次Scrum Meeting
    【Alpha阶段】第三次Scrum Meeting
    【Alpha阶段】第二次Scrum Meeting
    项目复审——Alpha阶段
    团队作业7-Alpha冲刺之事后诸葛亮
    团队作业6-展示博客
    Alpha阶段发布说明
    团队作业5-测试与发布
    冲刺博客-8
    冲刺博客-7
  • 原文地址:https://www.cnblogs.com/vonyao/p/3614327.html
Copyright © 2020-2023  润新知