為什么需要動態(tài)分配內(nèi)存?
因為動態(tài)數(shù)組可以解決靜態(tài)數(shù)組的缺陷
(1).靜態(tài)數(shù)組長度必須先指定,并且只能是常整數(shù),而且也不能為變量(長度不能為不確定的數(shù))
(2).靜態(tài)數(shù)組,程序員無法手動釋放內(nèi)存
(3).靜態(tài)數(shù)組確定后 無法更改(不能自主的擴充或縮?。?br/>(4).靜態(tài)數(shù)組不能跨函數(shù)調(diào)用
動態(tài)內(nèi)存分配--動態(tài)數(shù)組的構(gòu)造
e.g:
int *p = (int *)malloc(int Len);
//表達式左側(cè)是靜態(tài)分配的 占用4個字節(jié)(int),右側(cè)是動態(tài)分配的,含有Len個字節(jié)
1.malloc只有一個int型參數(shù),表示要求系統(tǒng)分配的字節(jié)數(shù)
2.malloc函數(shù)的功能是請求系統(tǒng)分配Len個字節(jié)的內(nèi)存空間,如果分配成功則返回第一個字節(jié)地址,若不成功則返回NULL
malloc函數(shù)只能返回第一個字節(jié)的地址,把這個地址轉(zhuǎn)化為一個實際意義的地址,malloc前必須加(數(shù)據(jù)類型 *),表示把空類型轉(zhuǎn)化為對應(yīng)數(shù)據(jù)類型的地址
e.g:
int *p = (int *)malloc(50);
//表示把系統(tǒng)分配的50個字節(jié)的第一個字節(jié)轉(zhuǎn)化為int*型的地址,再準確的說就是把第一個字節(jié)的地址轉(zhuǎn)化成4個字節(jié)的地址;
P指向第一個4字節(jié) P+1指向第2個地址 P[0]第一個元素 P[i]就是i+1個元素
動態(tài)內(nèi)存的釋放free(p);//表示把p指向的內(nèi)存釋放 P本身的內(nèi)存是靜態(tài)的
靜態(tài)內(nèi)存 和 動態(tài)內(nèi)存比較
靜態(tài)內(nèi)存是由系統(tǒng)自動分配的,由系統(tǒng)自動釋放
靜態(tài)內(nèi)存是在棧分配的
動態(tài)內(nèi)存是有程序員手動分配的,由程序員手動釋放
動態(tài)內(nèi)存是在堆中分配的
(使用棧就象我們?nèi)ワ堭^里吃飯,只管點菜(發(fā)出申請)、付錢、和吃(使用),吃飽了就
走,不必理會切菜、洗菜等準備工作和洗碗、刷鍋等掃尾工作,他的好處是快捷,但是自
由度小。
使用堆就象是自己動手做喜歡吃的菜肴,比較麻煩,但是比較符合自己的口味,而且自由
度大。 (引用其他的大神的 有興趣的同學可以自行研究) )
跨函數(shù)使用內(nèi)存的問題(重點)
靜態(tài)內(nèi)存不可以跨函數(shù)使用
所謂靜態(tài)內(nèi)存不可以跨函數(shù)使用的具體是:
靜態(tài)內(nèi)存在函數(shù)執(zhí)行期間 可以被其他函數(shù)使用
在執(zhí)行完畢之后就不能在被其他函數(shù)使用
動態(tài)內(nèi)存可以跨函數(shù)使用
動態(tài)內(nèi)存在函數(shù)執(zhí)行完畢之后仍可以被其他函數(shù)調(diào)用
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
網(wǎng)頁題目:整理C知識點--動態(tài)內(nèi)存分配-創(chuàng)新互聯(lián)
當前網(wǎng)址:http://chinadenli.net/article38/dgjdsp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)網(wǎng)站建設(shè)、品牌網(wǎng)站設(shè)計、微信公眾號、做網(wǎng)站、小程序開發(fā)、網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容