使用malloc函數或new運算符為鏈表結點分配內存空間


使用malloc函數或new運算符為鏈表結點分配內存空間

當我們定義鏈表結點類型后,如何在每次需要使用新結點時臨時分配相應大小的內存空間給新結點,本文介紹兩種方法,即C語言中的malloc函數與C++中的new運算符。

1.malloc函數

malloc函數是C語言中stdlib.h頭文件下用於申請動態內存的函數,其返回類型是申請的同變量類型的指針,基本用法。

typename* p=(typename*)malloc(sizeof(typename));

以申請一個int型變量和一個node型結構體變量比例:

int* p=(int)malloc(sizeof(int));
node* p=(node)malloc(sizeof(node));

​ 這個寫法的邏輯是:以需要申請的內存空間大小(即sizeof(node))為malloc函數的參數,這樣malloc函數就會向內存申請一塊大小為sizeof(node)的空間,並且返回指向這塊空間的指針。但是此時這個指針是一個未確定類型的指針void*,因此需要把它強制轉換為node*型的指針,因此在malloc之前加上(node *)。這樣等號右邊就得到一個node *型指針,並通過賦值等號把這個指針賦給node *,就成功申請了一塊node類型大小的內存空間,即一個node *型的結構體變量,並通過指針p來訪問它。如果申請失敗,則會返回空指針NULL。失敗一般發生在使用malloc申請了較大的動態數組,即

int *p=(int*)malloc(1000000 * sizeof(int));
//這樣malloc會返回空指針並賦值給p。因此只要是正常分配一個結點的空間,是不會失敗的。

2.new運算符


免責聲明!

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



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