內存管理(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)不能使用已經被釋放的空間;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM