zoukankan      html  css  js  c++  java
  • 内存管理(malloc和free的用法)

    内存管理

      1.堆和栈的区别:

        1》栈的特征

          1)、执行的速度相对较

          2)、空间较

          3)、生存期由系统决定

          4)、作用域较

          5)、有名空间,可以通过变量名或者数据名访问

        2》堆的特征

          1)、执行的速度相对较

          2)、空间较

          3)、生存期由“自己”决定,malloc申请,free释放;

          4)、作用域很大(整个程序都可以访问);

          5)、无名空间,只能通过指针使用

      

      2.如何对堆空间申请

        1》申请空间

          #include <stdlib.h>

          void *malloc(size_t size);

          功能:在堆中申请空间

          size:要申请的空间的大小(字节数)      

          返回值类型:void * 该类型表明malloc返回的地址空间中的数据类型是不确定,必须经过强制类型转换才可以使用。

          返回值:成功时,返回malloc申请的空间的起始地址,失败时,返回NULL。

          特点:----》malloc申请的空间为连续空间;

             ----》malloc申请的是没有初始化的空间;

          

          void *calloc(size_t nmemb, size_t size);

          特点:----》申请的空间是连续的;

             ----》申请的是已初始化的空间;

          void *realloc(void *ptr, size_t size);

        

         2》释放空间

            #include <stdlib.h>

            void free(void *ptr);

            参数ptr:

                1)不能传NULL;

                2)不能给ptr传申请的空间的一部分,例如:

                3)不能释放已经被释放的空间;

                4)不能使用已经被释放的空间;

  • 相关阅读:
    用VS2003调试ASP的方法和体会
    InterDev 调试错误信息: Unable to set server into correct debugging state automatically....的解决办法
    如何在程序里使用代码关闭由MessageBox()弹出的对话框?
    统计数字小程序
    计数程序
    C(读入字符串,转换为int型并做加法操作)
    c数据类型简记
    define使用
    统计数字小程序
    计数程序
  • 原文地址:https://www.cnblogs.com/feige1314/p/7216770.html
Copyright © 2011-2022 走看看