欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

C語言動態(tài)內存如何分配

這篇文章主要介紹“C語言動態(tài)內存如何分配”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“C語言動態(tài)內存如何分配”文章能幫助大家解決問題。

創(chuàng)新互聯(lián)于2013年創(chuàng)立,先為福清等服務建站,福清等地企業(yè),進行企業(yè)商務咨詢服務。為福清企業(yè)網站制作PC+手機+微官網三網同步一站式服務解決您的所有建站問題。

在我們平時寫程序的時候,需要定義的變量如“unsignedchar a[100];”,這句語句執(zhí)行的時候,編譯器就會給數(shù)組a分配100個字節(jié)的內存空間。但是,這個我們之前也簡單提到過,“unsignedchar a[100];”這句數(shù)組定義語句,其實其本身是一種Auto類型的變量類型。而我們前面說過,Auto類型的變量,編譯器會自動將其存儲在“?!笨臻g。這種方式有個非常不方便的地方,一旦當我需要對數(shù)組a存儲超過100長度的數(shù)據(jù),那么整個程序就會出現(xiàn)內存溢出。而如果一開始就將這個數(shù)組定義的很大,但是在實際使用中絕大多數(shù)實際數(shù)據(jù)量又不需要那么大,這樣也會產生存儲空間的浪費。
那有沒有一種辦法可以讓一個這個數(shù)組的存儲空間隨心所欲的變化呢?答案顯然是有的,這就是將內存申請動態(tài)化,C語言提供了兩個庫函數(shù)malloc和free,分別用于執(zhí)行動態(tài)內存的分配和釋放。注意,在C語言中,用malloc申請的內存在使用完成后,一定要進行手動釋放,否則會使內存消耗殆盡,程序停止運行。malloc和free維護了一個可用的內存池,也就是我們之前所謂的“堆”區(qū)。當一個程序需要一塊合適的內存時,就使用malloc函數(shù)進行申請,即取出一塊合適的內存,并返回一個指向這塊內存的指針。需要注意的是,這塊內存在被取出來之后,它并沒有被初始化過,因此我們需要手動對其初始化。接著,當程序不想再使用這塊內存時,使用free函數(shù)把它歸還給內存池。
這兩個函數(shù)都在<std< span="">lib.h>頭文件中聲明,它們的原型為:</std<>
void *malloc(size_t size);void free(void *pointer);
malloc的參數(shù)就是需要分配的內存的字節(jié)數(shù),如果內存池中的可用內存能滿足這個size的大小需求,那么malloc就會返回一個指向被分配的內存塊的起始位置的指針。
使用malloc分配的內存是一整塊連續(xù)的內存。如我們請求它分配100個字節(jié)的內存,那么它實際分配的就是100個連續(xù)的字節(jié)。
free函數(shù)調用時,其形式參數(shù)pointer一定要是一個先前從malloc函數(shù)分配的動態(tài)內存的指針,或者是一個NULL參數(shù),如果傳入NULL的話,free函數(shù)將不會產生任何作用。
這里大家注意下,malloc函數(shù)在使用的時候,除了我們需要輸入一個表示申請內存大小的參數(shù)外,就不需要輸入其他任何信息了。那么一旦當內存申請好之后,編譯器又是如何知道它會被用作整型,浮點型,數(shù)組還是其它的一些數(shù)據(jù)類型的變量呢?這里大家注意一下,malloc函數(shù)的返回值類型,它是一個void *類型的指針,void*指針有一個非常強大的技能,即它可以轉換為其它任何類型的指針,不管是C語言的標準數(shù)據(jù)類型,還是我們自己定義的一些結構類型,都是可以完美轉換的。
接下來,讓我們寫一段代碼來申請一塊長度為10的int類型的內存。如圖1所示。
 C語言動態(tài)內存如何分配
圖1 內存申請成功
此時,我們已經獲得了一塊長度為“sizeof(int) * 10”長度的內存了。為什么這里要寫成“sizeof(int) * 10”的方式呢?因為不同平臺int的長度是不同的,所以使用這種方式更加有利于程序的移植。內存申請好之后,接下來的問題是我們該如何來使用這一塊內存呢?使用的方式有幾種,第一種方式為使用指針的間接訪問。比如,我們?yōu)橹吧暾埖膬却嬉来钨x值0~9,那么使用指針的間接訪問如圖2所示。
C語言動態(tài)內存如何分配
圖2 指針間接訪問申請到的內存
如圖2的代碼所示,如果利用指針的間接訪問,我們每次都需要定義一個用于存儲當前地址首地址的指針變量。這個指針變量絕對任何時候都不能改變的,一旦改變之后,當我們需要釋放這段內存的時候,就無法找到首地址了。
第二種使用這段內存的方式為指針的下標引用。圖2同樣的內存賦值代碼如圖3所示。
C語言動態(tài)內存如何分配

關于“C語言動態(tài)內存如何分配”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關的知識,可以關注創(chuàng)新互聯(lián)行業(yè)資訊頻道,小編每天都會為大家更新不同的知識點。

文章名稱:C語言動態(tài)內存如何分配
文章分享:http://chinadenli.net/article46/jgijeg.html

成都網站建設公司_創(chuàng)新互聯(lián),為您提供動態(tài)網站、建站公司、服務器托管、網站策劃、云服務器、網站建設

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

綿陽服務器托管
微拍一区二区三区福利| 最近中文字幕高清中文字幕无| 日本免费一级黄色录像| 中文字幕佐山爱一区二区免费| 高潮少妇高潮久久精品99| 99久久精品午夜一区| 大香蕉再在线大香蕉再在线| 亚洲中文字幕三区四区| 黄色av尤物白丝在线播放网址| 深夜日本福利在线观看| 国产成人亚洲欧美二区综| 欧美日韩一区二区午夜| 精品一区二区三区中文字幕| 麻豆果冻传媒一二三区| 国产精品午夜小视频观看| 国产精品免费视频视频| 亚洲中文在线男人的天堂| 精品人妻精品一区二区三区| 色哟哟精品一区二区三区| 亚洲第一区二区三区女厕偷拍| 亚洲av秘片一区二区三区| 亚洲欧美国产网爆精品| 我要看日本黄色小视频| 年轻女房东2中文字幕| 亚洲中文字幕一区三区| 午夜精品一区免费视频| 暴力性生活在线免费视频| 久久99青青精品免费观看| 国产精品一区二区三区欧美 | 亚洲欧美国产精品一区二区| 亚洲欧美日韩国产自拍| 国产传媒免费观看视频| 国产成人精品视频一二区| 日本久久中文字幕免费| 欧洲精品一区二区三区四区 | 亚洲欧美日韩熟女第一页| 亚洲最新的黄色录像在线| 综合久综合久综合久久| 日本亚洲精品在线观看| 91欧美日韩中在线视频| 黄色美女日本的美女日人|