中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

動態內存分配

發布時間:2020-07-09 08:05:01 來源:網絡 閱讀:652 作者:檸檬dream 欄目:編程語言

c語言動態內存分配

 主要初步介紹malloc、calloc、realloc、free的基本用法。都是標準的庫函數,在stdlib.h庫內。

 malloc、free

分別用于動態內存分配和釋放

調用形式: (類型說明符*) malloc (size) ,“類型說明符”表示把該區域用于何種數據類型。(類型說明符*)表示把返回值強制轉換為該類型指針,malloc分配的內存是位于堆上的,并且沒有初始化內存的內容。malloc動態開辟一塊長度為size字節的連續區域,size為需要內存空間的長度,返回該區域的首地址。malloc分配存儲空間時,必須由我們計算需要的字節數。如果想要分配10int型的空間,那就是說需要10*sizeof(int)的內存空間。malloc分配的內存空間也有缺點,如果由malloc函數分配的內存空間原來沒有被使用過,則其中的每一位都有可能是0,反之,如果這部分內存曾經被分配過,則其中可能遺留各種各樣的數據。也就是說,使用malloc()函數分配內存時可能會出現問題。

int *p = (int *)malloc(10*sizeof(int));///分配完內存沒有初始化

calloc 也用于分配內存空間。調用形式: (類型說明符*)calloc(n,size) ,在內存動態存儲區中分配n塊長度為“size”字節的連續區域。函數的返回值為該區域的首地址。(類型說明符*)用于強制類型轉換。calloc函數與malloc 函數的區別僅在于一次可以分配n塊區域。 colloc與malloc類似,但是主要的區別是存儲在已分配的內存空間中的值默認為0,使用malloc時,已分配的內存中可以是任意的值.  colloc需要兩個參數,第一個是需要分配內存的變量的個數,第二個是每個變量的大小.

int *q = (int *)calloc(5,sizeof(int)); //calloc = malloc + memset//分配完內存自動初始化

realloc(p,5*sizeof(char));更改已經配置的內存空間,即更改由malloc()函數分配的內存空間的大小.如果重新分配成功則返回指向被分配內存的指針,否則返回空指針NULL。 當內存不再使用時,應使用free()函數將內存塊釋放。 

  注意:這里原始內存中的數據還是保持不變的。 

*p = realloc(p,5*sizeof(char));//修改malloc分配內存大小


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

德清县| 贵阳市| 西昌市| 合阳县| 沈阳市| 方正县| 丹阳市| 扎赉特旗| 武清区| 孙吴县| 故城县| 依兰县| 北京市| 永胜县| 德化县| 临猗县| 景泰县| 钦州市| 胶南市| 普兰县| 临安市| 奉节县| 深泽县| 明光市| 华蓥市| 陕西省| 西乌| 阿尔山市| 濉溪县| 荆门市| 滁州市| 石楼县| 卢龙县| 鹤庆县| 尖扎县| 攀枝花市| 常宁市| 定结县| 德格县| 湖州市| 秀山|