zoukankan      html  css  js  c++  java
  • C语言基础:内存 分类: iOS学习 c语言基础 2015-06-10 21:59 23人阅读 评论(0) 收藏

    全局变量:定义在函数之外.(不安全)   局部变量;定义在函数之内.

    内存的划分:1栈区   2堆区  3静态区(全局区) 4常量区 5代码区
    栈区..静态区.常量区.代码区的数据都是由系统分配和释放空间.
    堆区的内存必须自己去申请和释放.

    1.栈区     栈区的数据以栈的形式存放(先进后出)
    局部变量存放在栈区

    2.静态区  (全局区)
    被static修饰的变量和全局变量存放在静态区
    static修饰符的作用:
    1.修饰的变存放在静态区
    2.修饰的变量只初始化一次
    3.由static修饰的变量如果没有初始化,系统默认为0

    3.常量区
    存放常量,常量区的数据不可以修改

    4.代码区
    程序中运行的函数和语句都会编译成CPU指令存放在代码区
    函数名 就是 函数在代码区的首地址

    5.堆区
    由开发人员手动申请和手动释放

    申请内存函数:
    void * malloc(size)
    返回值类型    void  *    范类型(可以转化为其他任意类型)
    //在堆区申请四个字节的空间,返回的是申请空间的首地址
    -----------------------------------------------------------------------------------------

    calloc(count,size)

    calloc会对申请的内存空间先做一个清空操作.返回值也是申请空间的首地址.

    -----------------------------------------------------------------------------------------

    void  reallloc(*p,size)

    从指针p的位置开始,重新申请(size)个字节.如果后面有size个连续的字节的话,就直接申请到位,如果不够的话,就先释放之前的内存,重新寻找size个连续的空间,为此,指针发生了重指向.

    -----------------------------------------------------------------------------------------

    void * malloc(dest,source,n)
    从指针source拷贝n字节,拷贝到dest中.

    ----------------------------------------------------------------------------------------
    int memcmp(*p1,*p2,n)
    比较p1和p2指向的内存里面的内容是否相同,比较n个字节.如果相同,返回0,不同返回差值.
    逐个字节(相对位置)比较,返回第一个差值.



    ============================================
    堆区内存使用之后记得释放

    // void free (void *)

        //    free(p1);   //把对应的内存空间,职位 可用空间

        //    p1=NULL;   //把指针 职位 

    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    Android捕捉错误try catch 的简单使用
    ubuntu下安装lua和tolua++
    mosh安装与使用
    三,温习redis持久化解析与配置
    二,温习redis(工具命令使用)
    一,温习Redis (详解从安装到配置)
    报错!-> CPU100%-但是找不到使用cpu的进程
    linux安全---防火墙(iptables)理论解析
    Mysql8.0版二进制安装(my.cnf文件灵活编写)
    ansible实现template管理nginx
  • 原文地址:https://www.cnblogs.com/shaoting/p/4619827.html
Copyright © 2011-2022 走看看