malloc用法

從函數聲明上可以看出。malloc 和 new 至少有兩個不同: new 返回指定類型的指針,並且可以自動計算所需要大小。比如: 
int *p; 
p = new int; //返回類型爲int* 類型(整數型指針),分配大小爲 sizeof(int); 
或: 
int* parr; 
parr = new int [100]; //返回類型爲 int* 類型(整數型指針),分配大小爲 sizeof(int) * 100; 
而 malloc 則必須由我們計算要字節數,並且在返回後強行轉換爲實際類型的指針。 
int* p; 
p = (int *) malloc (sizeof(int)); 
第一、malloc 函數返回的是 void * 類型,如果你寫成:p = malloc (sizeof(int)); 則程序無法通過編譯,報錯:“不能將 void* 賦值給 int * 類型變量”。所以必須通過 (int *) 來將強制轉換。 
第二、函數的實參爲 sizeof(int) ,用於指明一個整型數據需要的大小。如果你寫成: 

int* p = (int *) malloc (1); 

比如想分配100個int類型的空間: 
int* p = (int *) malloc ( sizeof(int) * 100 ); //分配可以放得下100個整數的內存空間。

struct hostent *hp;

//注意是sizeof( sturct hostent )而不是sizeof( sturct hostent* )
//其中N代表你需要的sturct hostent類型數據的數量
hp = ( struct hostent* ) malloc ( N * sizeof( sturct hostent ) );

if ( !hp )      //建議要加上這個內存分配成功與否的檢測
{
       // 添加內存分配失敗時的處理方法
}



發佈了5 篇原創文章 · 獲贊 5 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章