C/C++的動態內存管理

大家好,我今天來給大家講解一下C/C++的動態內存管理。

C:C當中一共有三個函數,他們分別是 ,malloc、calloc和realloc。free是動態內存的釋放。

      malloc:1.動態內存分配。

    2.它的參數是需要分配的內存字節數。

            3.它分配內存的時候需要向內存池申請分配所需要的內存大小,並且分配的是一塊連續的內存。如果說內存

                       池不夠的話,它就會向操作系統申請空間,無法提供更多的內存的話, 就會返回一個NULL。    

      calloc:1.也是用於內存分配,calloc和malloc的主要區別在於前者在返回指針時會把他初始化爲0,還有一個區別在於

                      他們請求空間的方式不同。

   2.calloc的參數是所需元素的數量和每個元素的字節數。

       relloc:1.relloc用於修改一個原先已經分配好的內存塊的大小。

                   2.如果原先的內存塊無法改變大小,relloc函數會將分配另外一塊正確大小的內存,並把原先那塊內存的內容

      複製到新的快上,所以,relloc函數返回的指針不一定是原始的指針。

C++:C++動態內存分配是new函數,釋放是delete函數。

        new:1.在用new分配空間時,它會返回一個指向新對象的指針,也就是說新對象的起始地址,可以用這個指針來訪

                     問該對象。

                  2.在new分配空間時,內存不足,它會返回一個0指針值,編譯器不同,返回也不同,有的編譯器會返回一個

                     拋異常。

    delete:1.在調用delete時,會自動調用析構函數,來進行清理工作。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章