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

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

生活随笔

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

编程问答

C语言与JAVA内存管理_C语言内存管理

發(fā)布時(shí)間:2023/12/2 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言与JAVA内存管理_C语言内存管理 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

本章將介紹C語(yǔ)言動(dòng)態(tài)內(nèi)存管理. C語(yǔ)言編程語(yǔ)言提供了多種功能的內(nèi)存分配和管理。這些函數(shù)可以在頭文件中找到。

S.N.

函數(shù)與說(shuō)明

1

void *calloc(int num, int size);

此函數(shù)分配num元素其中每一個(gè)字節(jié)大小為(size)的數(shù)組

2

void free(void *address);

此函數(shù)釋放由地址指定的存儲(chǔ)器塊的塊

3

void *malloc(int num);

這個(gè)函數(shù)分配num個(gè)字節(jié)數(shù)組,并把它們初始化

4

void *realloc(void *address, int newsize);

此函數(shù)重新分配內(nèi)存達(dá)其擴(kuò)展newsize

分配內(nèi)存動(dòng)態(tài)

當(dāng)編寫(xiě)程序,如果知道一個(gè)數(shù)組的大小,那么它是很簡(jiǎn)單的,可以把它定義為一個(gè)數(shù)組。例如存儲(chǔ)任何人的名字,它可以最多100個(gè)字符,這樣就可以定義的東西如下:

charname[100];

但是,現(xiàn)在讓我們考慮一個(gè)情況,如果不知道需要存儲(chǔ)文本的長(zhǎng)度,比如想存儲(chǔ)有關(guān)的話題的詳細(xì)說(shuō)明。在這里,我們需要定義一個(gè)指針字符沒(méi)有定義的基礎(chǔ)上規(guī)定,如在下面的例子中,我們可以分配的內(nèi)存是多少內(nèi)存要求更長(zhǎng)字段:

#include#include#includeintmain(){charname[100];char*description;strcpy(name,"Zara Ali");/* allocate memory dynamically */description=malloc(200*sizeof(char));if(description==NULL){fprintf(stderr,"Error - unable to allocate required memory

");}else{strcpy(description,"Zara ali a DPS student in class 10th");}printf("Name = %s

",name);printf("Description: %s

",description);}

當(dāng)上述代碼被編譯和執(zhí)行時(shí),它產(chǎn)生了以下結(jié)果。

Name = Zara Ali

Description: Zara ali a DPS student in class 10th

同樣的程序可以通過(guò)calloc()只需要用calloc代替malloc完成如下:

calloc(200,sizeof(char));

所以完全的控制,可以通過(guò)任何大小的值,而分配的內(nèi)存在不同的地方,一旦定義的大小之后就不能改變數(shù)組。

調(diào)整大小和釋放內(nèi)存

當(dāng)程序執(zhí)行出來(lái)后,操作系統(tǒng)會(huì)自動(dòng)釋放所有程序,但作為一個(gè)很好的做法,當(dāng)不在需要的內(nèi)存分配的內(nèi)存了,那么應(yīng)該通過(guò)調(diào)用free()函數(shù)釋放內(nèi)存。

另外,也可以增加或通過(guò)調(diào)用realloc()函數(shù)減少已分配的內(nèi)存塊的大小。讓我們?cè)僖淮螜z查上面的程序,并利用realloc()和free()函數(shù):

#include#include#includeintmain(){charname[100];char*description;strcpy(name,"Zara Ali");/* allocate memory dynamically */description=malloc(30*sizeof(char));if(description==NULL){fprintf(stderr,"Error - unable to allocate required memory

");}else{strcpy(description,"Zara ali a DPS student.");}/* suppose you want to store bigger description */description=realloc(description,100*sizeof(char));if(description==NULL){fprintf(stderr,"Error - unable to allocate required memory

");}else{strcat(description,"She is in class 10th");}printf("Name = %s

",name);printf("Description: %s

",description);/* release memory using free() function */free(description);}

當(dāng)上述代碼被編譯和執(zhí)行時(shí),它產(chǎn)生了以下結(jié)果。

Name = Zara Ali

Description: Zara ali a DPS student.She is in class 10th

可以試試上面的例子不重新分配額外的內(nèi)存,那么strcat()函數(shù)將因缺乏描述可用內(nèi)存給出一個(gè)錯(cuò)誤。

¥ 我要打賞

糾錯(cuò)/補(bǔ)充

收藏

上一篇:

加QQ群啦,易百教程官方技術(shù)學(xué)習(xí)群

注意:建議每個(gè)人選自己的技術(shù)方向加群,同一個(gè)QQ最多限加 3 個(gè)群。

總結(jié)

以上是生活随笔為你收集整理的C语言与JAVA内存管理_C语言内存管理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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