91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

C語言中怎么實現動態內存分配

發布時間:2021-07-02 17:17:15 來源:億速云 閱讀:168 作者:Leah 欄目:編程語言

這篇文章給大家介紹C語言中怎么實現動態內存分配,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

C語言動態內存分配的詳解

1.為什么使用動態內存分配

數組在使用的時候可能造成內存浪費,使用動態內存分配可以解決這個問題。

2. malloc和free

C函數庫提供了兩個函數,malloc和free,分別用于執行動態內存分配和釋放。

(1)void *malloc(size_t size);

malloc的參數就是需要分配的內存字節數。malloc分配一塊連續的內存。如果操作系統無法向malloc提供更多的內存,malloc就返回一個NULL指針。

(2)void free(void *pointer);

free的參數要么是NULL,要么是一個先前從malloc、calloc或realloc返回的值。

3. calloc和realloc

(1)void *calloc(size_t num_elements,size_t element_size);

calloc也用于內存分配。malloc和calloc之間的主要區別是后者在返回指向內存的指針之前把它初始化為0。

(2)realloc(void *ptr,size_t new_size);

realloc函數用于修改一個原先已經分配的內存塊的大小。如果它用于擴大一個內存,那么這塊內存原先的內容依然保留,新增加的內存添加到原先內存塊的后面。如果它用于縮小一個內存塊,該內存塊尾部的部分內存被拿掉,剩余部分內存的原先內容依然保留。

4. 使用動態分配的內存

(1)使用示例

int *pi;

pi = malloc(25 * sizeof(int));

if(pi == NULL){

printf("out of memery\n");

exit(1);

}

(2)使用間接訪問

int *pi2,i;

pi2 = pi;

for(i = 0;i < 25;i += 1)

*pi2++ = 0;

也可以使用下標。

int i;

for(i = 0;i < 25;i += 1)

*pi[i] = 0;

5. 常見的動態內存錯誤

常見的錯誤有:對NULL指針進行解引用操作、對分配的內存進行操作時越過邊界、釋放并非內存分配的內存、試圖釋放一塊動態分配的內存的一部分以及一塊動態內存釋放之后被繼續使用。

關于C語言中怎么實現動態內存分配就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

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

AI

南宫市| 明星| 冕宁县| 土默特右旗| 平和县| 泰来县| 射阳县| 尼勒克县| 马尔康县| 辉县市| 柏乡县| 临高县| 镇安县| 淮南市| 贡觉县| 邯郸市| 凤城市| 将乐县| 石门县| 紫金县| 桃园市| 彭阳县| 韩城市| 晋城| 邢台县| 迁西县| 呼伦贝尔市| 安丘市| 晋宁县| 渭南市| 招远市| 桐城市| 察雅县| 涪陵区| 辽中县| 龙胜| 南充市| 乌拉特后旗| 汉源县| 卢湾区| 万州区|