欧美大屁股bbbbxxxx,狼人大香伊蕉国产www亚洲,男ji大巴进入女人的视频小说,男人把ji大巴放进女人免费视频,免费情侣作爱视频

歡迎來到入門教程網(wǎng)!

C語言

當前位置:主頁 > 軟件編程 > C語言 >

C語言動態(tài)內(nèi)存分配的詳解

來源:本站原創(chuàng)|時間:2020-01-10|欄目:C語言|點擊: 次

C語言動態(tài)內(nèi)存分配的詳解

1.為什么使用動態(tài)內(nèi)存分配

數(shù)組在使用的時候可能造成內(nèi)存浪費,使用動態(tài)內(nèi)存分配可以解決這個問題。

2. malloc和free

C函數(shù)庫提供了兩個函數(shù),malloc和free,分別用于執(zhí)行動態(tài)內(nèi)存分配和釋放。

(1)void *malloc(size_t size);

malloc的參數(shù)就是需要分配的內(nèi)存字節(jié)數(shù)。malloc分配一塊連續(xù)的內(nèi)存。如果操作系統(tǒng)無法向malloc提供更多的內(nèi)存,malloc就返回一個NULL指針。

(2)void free(void *pointer);

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

3. calloc和realloc

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

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

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

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

4. 使用動態(tài)分配的內(nèi)存

(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. 常見的動態(tài)內(nèi)存錯誤

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

以上就是對C語言中動態(tài)內(nèi)存分配的資料講解,如有疑問請大家留言或者到本站社區(qū)討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

上一篇:C++ 開發(fā)之實現(xiàn)操作符重載的實例

欄    目:C語言

下一篇:c++ 完備的運行時類型信息(動態(tài)類型信息)

本文標題:C語言動態(tài)內(nèi)存分配的詳解

本文地址:http://mengdiqiu.com.cn/a1/Cyuyan/1328.html

網(wǎng)頁制作CMS教程網(wǎng)絡(luò)編程軟件編程腳本語言數(shù)據(jù)庫服務(wù)器

如果侵犯了您的權(quán)利,請與我們聯(lián)系,我們將在24小時內(nèi)進行處理、任何非本站因素導(dǎo)致的法律后果,本站均不負任何責任。

聯(lián)系QQ:835971066 | 郵箱:835971066#qq.com(#換成@)

Copyright © 2002-2020 腳本教程網(wǎng) 版權(quán)所有