日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

使用malloc创建头结点的坑

發(fā)布時(shí)間:2024/9/21 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用malloc创建头结点的坑 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

首先,malloc()是動(dòng)態(tài)內(nèi)存分配函數(shù),用來(lái)向系統(tǒng)請(qǐng)求分配內(nèi)存空間。當(dāng)無(wú)法知道內(nèi)存具體的位置時(shí),想要綁定真正的內(nèi)存空間,就要用到malloc()函數(shù)。因?yàn)閙alloc只管分配內(nèi)存空間,并不能對(duì)分配的空間進(jìn)行初始化,所以申請(qǐng)到的內(nèi)存中的值是隨機(jī)的,經(jīng)常會(huì)使用memset()進(jìn)行置0操作后再使用。  

  與其配套的是free(),當(dāng)申請(qǐng)到的空間不再使用時(shí),要用free()函數(shù)將內(nèi)存空間釋放掉,這樣可以提高資源利用率,最重要的是----就是因?yàn)樗梢陨暾?qǐng)內(nèi)存空間,然后根據(jù)需要進(jìn)行釋放,才被稱為“動(dòng)態(tài)內(nèi)存分配”!  

void *malloc(int size);

說(shuō)明:malloc?向系統(tǒng)申請(qǐng)分配指定size個(gè)字節(jié)的內(nèi)存空間。返回類型是?void*?類型。void*?表示未確定類型的指針。C,C++規(guī)定,void*?類型可以強(qiáng)制轉(zhuǎn)換為任何其它類型的指針。

從函數(shù)聲明上可以看出。malloc??new?至少有兩個(gè)不同:

new 可以自動(dòng)返回指定類型的指針,并且可以自動(dòng)計(jì)算所需要大小。

比如:

int *p;

p = new int;? ? ? ? ? ? ? ? ? ?//返回類型為int*?類型(整數(shù)型指針),分配大小為?sizeof(int);

或: 

int* parr;

parr = new int [100];? ? ? //返回類型為?int*?類型(整數(shù)型指針),分配大小為?sizeof(int) * 100; 

?malloc?則必須由我們計(jì)算要字節(jié)數(shù),并且在返回后強(qiáng)行轉(zhuǎn)換為實(shí)際類型的指針。 

int* p; 

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

其次

1.malloc(0)會(huì)返回一個(gè)非空指針
2.malloc(0)返回的指針,對(duì)其使用free不會(huì)出錯(cuò)
3.malloc(-1)在vs和vc下運(yùn)行出錯(cuò),程序卡死在malloc那一行,linux則編譯報(bào)錯(cuò)

最后

在創(chuàng)建鏈表的帶頭結(jié)點(diǎn)時(shí),切記最好用 :

struct ListNode*cur= (struct ListNode*)malloc(sizeof(struct ListNode));

切記不要用struct ListNode*cur=malloc(0);? ? ? !!!!!

總結(jié)

以上是生活随笔為你收集整理的使用malloc创建头结点的坑的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。