學了指針沒學動態(tài)內存一切都白搭!C語言之內存管理

推薦一個學C/C++的學習裙【567焦读,625子库,668】,無論你是大牛仍是小白,是想轉行仍是想入行都能夠來了解一同進步一同學習矗晃!裙內有很多干貨和技能共享仑嗅!

本文將講解 C 中的動態(tài)內存管理。C 語言為內存的分配和管理提供了幾個函數(shù)张症。這些函數(shù)可以在頭文件中找到仓技。

在內存中動態(tài)地分配 num 個長度為 size 的連續(xù)空間,并將每一個字節(jié)都初始化為 0吠冤。所以它的結果是分配了 num*size 個字節(jié)長度的內存空間浑彰,并且每個字節(jié)的值都是0。

該函數(shù)釋放 address 所指向的內存塊,釋放的是動態(tài)分配的內存空間拯辙。

在堆區(qū)分配一塊指定大小的內存空間郭变,用來存放數(shù)據(jù)颜价。這塊內存空間在函數(shù)執(zhí)行完成后不會被初始化,它們的值是未知的诉濒。

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

該函數(shù)重新分配內存周伦,把內存擴展到newsize。

注意:void * 類型表示未確定類型的指針未荒。C专挪、C++ 規(guī)定void* 類型可以通過類型轉換強制轉換為任何其它類型的指針。

編程時片排,如果您預先知道數(shù)組的大小寨腔,那么定義數(shù)組時就比較容易。例如率寡,一個存儲人名的數(shù)組迫卢,它最多容納 100 個字符,所以您可以定義數(shù)組冶共,如:char name[100];

但是乾蛤,如果您預先不知道需要存儲的文本長度,例如您向存儲有關一個主題的詳細描述捅僵。在這里家卖,我們需要定義一個指針,該指針指向未定義所需內存大小的字符庙楚,后續(xù)再根據(jù)需求來分配內存上荡,如下所示:


上面的程序也可以使用calloc來編寫,只需要把 malloc 替換為 calloc 即可馒闷,如下所示:

calloc(200,sizeof(char));

當動態(tài)分配內存時榛臼,您有完全控制權,可以傳遞任何大小的值窜司。而那些預先定義了大小的數(shù)組,一旦定義則無法改變大小航揉。

當程序退出時塞祈,操作系統(tǒng)會自動釋放所有分配給程序的內存,但是帅涂,建議您在不需要內存時议薪,都應該調用函數(shù)free來釋放內存。

或者媳友,您可以通過調用函數(shù)realloc來增加或減少已分配的內存塊的大小斯议。讓我們使用realloc和 free 函數(shù),再次查看上面的實例:

您可以嘗試一下不重新分配額外的內存醇锚,strcat 函數(shù)會生成一個錯誤哼御,因為存儲description時可用的內存不足坯临。

小編推薦一個學C/C++的學習裙【567,625恋昼,668】,無論你是大牛仍是小白看靠,是想轉行仍是想入行都能夠來了解一同進步一同學習!裙內有很多干貨和技能共享液肌!

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末挟炬,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子嗦哆,更是在濱河造成了極大的恐慌谤祖,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件老速,死亡現(xiàn)場離奇詭異粥喜,居然都是意外死亡,警方通過查閱死者的電腦和手機烁峭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進店門容客,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人约郁,你說我怎么就攤上這事缩挑。” “怎么了鬓梅?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵供置,是天一觀的道長。 經(jīng)常有香客問我绽快,道長芥丧,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任坊罢,我火速辦了婚禮续担,結果婚禮上,老公的妹妹穿的比我還像新娘活孩。我一直安慰自己物遇,他們只是感情好,可當我...
    茶點故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布憾儒。 她就那樣靜靜地躺著询兴,像睡著了一般。 火紅的嫁衣襯著肌膚如雪起趾。 梳的紋絲不亂的頭發(fā)上诗舰,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天,我揣著相機與錄音训裆,去河邊找鬼眶根。 笑死蜀铲,一個胖子當著我的面吹牛,可吹牛的內容都是我干的汛闸。 我是一名探鬼主播蝙茶,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼诸老!你這毒婦竟也來了隆夯?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤别伏,失蹤者是張志新(化名)和其女友劉穎蹄衷,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體厘肮,經(jīng)...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡愧口,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了类茂。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片耍属。...
    茶點故事閱讀 38,018評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖巩检,靈堂內的尸體忽然破棺而出厚骗,到底是詐尸還是另有隱情,我是刑警寧澤兢哭,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布领舰,位于F島的核電站,受9級特大地震影響迟螺,放射性物質發(fā)生泄漏冲秽。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一矩父、第九天 我趴在偏房一處隱蔽的房頂上張望锉桑。 院中可真熱鬧,春花似錦窍株、人聲如沸刨仑。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至辙诞,卻和暖如春辙售,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背飞涂。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工旦部, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留祈搜,地道東北人。 一個月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓士八,卻偏偏與公主長得像容燕,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子婚度,可洞房花燭夜當晚...
    茶點故事閱讀 42,762評論 2 345

推薦閱讀更多精彩內容

  • C語言中內存分配 在任何程序設計環(huán)境及語言中蘸秘,內存管理都十分重要。在目前的計算機系統(tǒng)或嵌入式系統(tǒng)中蝗茁,內存資源仍然是...
    一生信仰閱讀 1,148評論 0 2
  • 版權聲明:本文為 gfson 原創(chuàng)文章醋虏,轉載請注明出處。注:作者水平有限哮翘,文中如有不恰當之處颈嚼,請予以指正,萬分感謝...
    gfson閱讀 2,899評論 0 6
  • 前言 C語言作為一門應用途廣泛饭寺、功能強大阻课、使用靈活的面向過程式編程語言。既可用于編寫應用軟件艰匙,又能用于編寫系統(tǒng)軟件...
    老板娘來盤一血閱讀 12,963評論 32 83
  • 春日的午后 溫暖而舒適的微風 輕輕吹拂著臉龐 遠處的樹葉綠了 悄無聲息的從芽到葉 驀然抬眸 已是滿眼翠綠 象征生命...
    白色野薔薇閱讀 420評論 2 0
  • 9月14日限煞,今天是球球的第208天。 前幾天球球太鬧了旬薯,估計是把孩子累的夠嗆晰骑,然后今天整整一天都睡得很好。 首先昨...
    曦寶閱讀 154評論 1 1