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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

使用malloc创建头结点的坑

發布時間:2024/9/21 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用malloc创建头结点的坑 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

首先,malloc()是動態內存分配函數,用來向系統請求分配內存空間。當無法知道內存具體的位置時,想要綁定真正的內存空間,就要用到malloc()函數。因為malloc只管分配內存空間,并不能對分配的空間進行初始化,所以申請到的內存中的值是隨機的,經常會使用memset()進行置0操作后再使用。  

  與其配套的是free(),當申請到的空間不再使用時,要用free()函數將內存空間釋放掉,這樣可以提高資源利用率,最重要的是----就是因為它可以申請內存空間,然后根據需要進行釋放,才被稱為“動態內存分配”!  

void *malloc(int size);

說明:malloc?向系統申請分配指定size個字節的內存空間。返回類型是?void*?類型。void*?表示未確定類型的指針。C,C++規定,void*?類型可以強制轉換為任何其它類型的指針。

從函數聲明上可以看出。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)); 

其次

1.malloc(0)會返回一個非空指針
2.malloc(0)返回的指針,對其使用free不會出錯
3.malloc(-1)在vs和vc下運行出錯,程序卡死在malloc那一行,linux則編譯報錯

最后

在創建鏈表的帶頭結點時,切記最好用 :

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

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

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。