内存管理(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)不能使用已经被释放的空间;

 

posted @ 2017-07-21 12:17  hello,123456  阅读(5922)  评论(0编辑  收藏  举报