動態資料結構

來源:互聯網
上載者:User

        所謂動態資料結構,是指在運行時刻才能確定所需記憶體空間大小的資料結構,動態資料結構所使用的的記憶體稱為動態記憶體。動態記憶體的使用有一定的危險,必須遵守一定的規則。動態申請的記憶體在不需要時必須及時釋放,如果不斷地申請動態記憶體而不加以釋放,將導致記憶體資源的枯竭。

        c++處理動態記憶體提供了一對操作符new和delete。new操作符用於動態申請記憶體,而delete操作符則用來釋放動態申請的記憶體。如果對象中為指標型屬性申請了動態記憶體,則必須在解構函式中加以釋放。

        在c++中,動態記憶體和指標變數是密切相關的,將指標變數和c++中的new和delete操作符結合起來,用來申請和釋放動態記憶體。

        在程式運行過程中,當確定了資料所需記憶體空間的大小後,可以用new操作符請求系統分配足夠的記憶體以存放該資料,並返回指向新申請到的記憶體地區的指標,如果申請不成功(這通常是因為記憶體空間不夠),則返回null 指標NULL。

        例如,下面的程式段中,new以資料類型T為參數,為類型為T的變數申請記憶體,返回得到記憶體位址。

        T*p;        //定義p為指向T的指標

        p=new T;//p為類型T資料的記憶體位址

         又如,當p1和p2分別為指向int和long類型資料的指標時,操作符new可以為它們分別申請相應的記憶體空間並將其他地址分別賦給p1和p2。

        int*p1;          //定義p1為指向int(2位元組大小)的指標

        long*p2;       //定義p2為指向long(4位元組大小)的指標

        p1=new int;  //p1指向記憶體中的一個整數

        p2=new long;//p2指向記憶體中的一個長整數

        預設情況下,new申請的記憶體中的內容沒有初值,如果需要初值,必須使用操作符new的參數形式:

        p=new T(value);

         如下述操作:

        p1=new int(100);

        為整數申請記憶體並對其賦初值100,p1指向一個初值為100的整數。在c++中,不僅可以動態申請單一資料型別的記憶體空間,也可以申請複雜的資料類型,如動態數組的申請。程式中需要申請動態數組時,可用帶方括弧“[ ]”的new操作符為數組申請記憶體。例如:

        T*p;              定義p為指向T的指標

        p=new T[n];  為類型為T的n元數組申請記憶體

        將p指向數組的第一個元素。和單一資料型別不同,用這種方法申請數組時不能指定初始值。當申請的動態記憶體不再需要時,使用delete操作符加以釋放。需要注意的是,delete的使用形式必須和new相匹配。例如:

        T*p1,*p2;       //p1和p2均為指向類型T的指標

        p1=new T;      //p1指向一個類型為T的資料

        p2=new T[n];  //p2指向一個類型為T的n元數組

        操作符delete使用這些指標來釋放為它們申請的記憶體,但在釋放數組時,必須與“[ ]”運算子結合使用:

        delete p1;//釋放p1指向的簡單變數空間

        delete [ ] p2; //釋放p2指向的陣列變數空間

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.