RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

C語言怎么建立內(nèi)存的動態(tài)分配

jf_78858299 ? 來源:C語言 ? 作者:閆小林 ? 2023-03-10 15:30 ? 次閱讀

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

在C語言中,全局變量是分配在內(nèi)存中的靜態(tài)存儲區(qū)的,非靜態(tài)的局部變量,包括形參是分配在內(nèi)存中的動態(tài)存儲區(qū)的,這個存儲區(qū)是一個“?!钡膮^(qū)域。

C語言允許建立內(nèi)存動態(tài)分配區(qū)域,以存放一些臨時用的數(shù)據(jù),這些數(shù)據(jù)不必在程序的聲明部分定義,也不必等到函數(shù)結(jié)束時才釋放,而是需要時隨時開辟,不需要時隨時釋放。這些數(shù)據(jù)是臨時存放在一個特別的自由存儲區(qū),稱為“堆”。

C語言怎么建立內(nèi)存的動態(tài)分配

malloc函數(shù)

函數(shù)原型
void *malloc(unsigned int size);

其作用是在內(nèi)存的動態(tài)存儲區(qū)分配一個長度為size的連續(xù)空間。形參size的類型定為無符號整型。此函數(shù)是一個指針型函數(shù),返回的指針指向該分配域的開頭位置。

calloc函數(shù)

函數(shù)原型

void *calloc(unsigned n,unsigned size);

其作用是在內(nèi)存的動態(tài)存儲區(qū)中分配n個長度為size的連續(xù)空間,這個空間一般比較大,足以保存一個數(shù)組。

free函數(shù)

函數(shù)原型

void free(void *p);

其作用是釋放指針變量p所指向的動態(tài)空間,使這部分空間能重新被其他變量使用。

realloc函數(shù)

函數(shù)原型

void *realloc(void *p,unsigned int size);

如果已經(jīng)通過malloc函數(shù)或者calloc函數(shù)獲得了動態(tài)空間,想改變其大小,可以用realloc函數(shù)重新分配。

C99標(biāo)準(zhǔn)把意思malloc、calloc、realloc函數(shù)的基類型定為void類型,這種指針稱為無類型指針。

C語言void指針類型

指向void類型應(yīng)該理解為指向空類型或者不指向確定的類型的數(shù)據(jù)。

把void指針賦值給不同基類型的指針變量時,編譯系統(tǒng)會自動進行轉(zhuǎn)換,不必用戶自己進行強制轉(zhuǎn)換。

內(nèi)存的動態(tài)分配主要應(yīng)用于建立程序中的動態(tài)數(shù)據(jù)結(jié)構(gòu)中。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 內(nèi)存
    +關(guān)注

    關(guān)注

    8

    文章

    3019

    瀏覽量

    74003
  • C語言
    +關(guān)注

    關(guān)注

    180

    文章

    7604

    瀏覽量

    136685
  • 指針
    +關(guān)注

    關(guān)注

    1

    文章

    480

    瀏覽量

    70551
收藏 人收藏

    評論

    相關(guān)推薦

    FreeRTOS內(nèi)存動態(tài)分配嗎?

    你可能會好奇:FreeRTOS可以創(chuàng)建任務(wù),也可以刪除任務(wù),它是動態(tài)分配內(nèi)存嗎?
    的頭像 發(fā)表于 03-24 09:55 ?2191次閱讀
    FreeRTOS<b class='flag-5'>內(nèi)存</b>是<b class='flag-5'>動態(tài)分配</b>嗎?

    C語言知識總結(jié):動態(tài)內(nèi)存分配

    動態(tài)內(nèi)存分配就 是指在程序執(zhí)行的過程中動態(tài)分配或者回收存儲空間的分配內(nèi)存的方法。
    發(fā)表于 10-24 15:52 ?855次閱讀

    C語言既然可以自動為變量分配內(nèi)存,為什么還要用動態(tài)分配內(nèi)存呢?

    不知道大家在學(xué)習(xí)C語言動態(tài)分配內(nèi)存的時候有沒有過這樣的疑問,既然系統(tǒng)可以自動幫我們分配內(nèi)存,為什
    發(fā)表于 12-13 11:14 ?1047次閱讀

    使用C語言實現(xiàn)簡單動態(tài)內(nèi)存分配

    首先要明白為何需要動態(tài)內(nèi)存分配,熟悉C語言的讀者應(yīng)該對這個比較熟悉,需要一段內(nèi)存時會使用malloc函數(shù)來申請所需要大小的
    發(fā)表于 07-28 16:26 ?642次閱讀
    使用<b class='flag-5'>C</b><b class='flag-5'>語言</b>實現(xiàn)簡單<b class='flag-5'>動態(tài)內(nèi)存</b><b class='flag-5'>分配</b>

    C語言程序設(shè)計中動態(tài)內(nèi)存分配如何實現(xiàn)

    C語言程序設(shè)計中,動態(tài)內(nèi)存分配如何實現(xiàn),需要注意哪些問題?
    發(fā)表于 09-28 16:53 ?1353次閱讀

    怎么在LL2和DDR3上用malloc同時動態(tài)分配內(nèi)存

    程序中需要用malloc動態(tài)分配兩塊內(nèi)存,分別在LL2和DDR3上,請問用cmd動態(tài)分配的空間都是在.sysmem里面嗎?怎么在兩塊內(nèi)存中都動態(tài)
    發(fā)表于 06-21 09:29

    請教關(guān)于在堆區(qū)的動態(tài)分配內(nèi)存問題

    ;]CmplxSgn_t;在定義信號之后會動態(tài)分配一段arrayLen長的內(nèi)存給ptSignalArray,在信號的使命結(jié)束后會把內(nèi)存釋放掉。但是俺剛接觸dsp不久,有資料說頻繁的申請/釋放內(nèi)
    發(fā)表于 08-07 08:29

    為什么lwip建立TCP客戶端時不動態(tài)分配本地端口?

    最近這兩天,在做EtherNet/IP協(xié)議。STM32作為客戶端,連接遠(yuǎn)程服務(wù)端?,F(xiàn)在遇到一個問題,在建立TCP客戶端時,遠(yuǎn)程端口為44818,分配的本地端口一直為49153。按照我對TCP的了解,本地端口應(yīng)該是動態(tài)分配的,為什
    發(fā)表于 08-29 20:48

    嵌入式C語言動態(tài)內(nèi)存分配

    memset函數(shù)free內(nèi)存時,需要把指針變量置為NULL,防止其變?yōu)橐爸羔榤emset(void* Dst, int Val, size_t size)作用:把Dst中大小為size的內(nèi)容全部由Val替換符合編程規(guī)范的動態(tài)分配內(nèi)存
    發(fā)表于 12-14 06:37

    請問使用動態(tài)內(nèi)存分配安全嗎?

    在使用完畢后,需要顯式的釋放之,這就要求程序員對動態(tài)分配內(nèi)存了然于胸。在非常重視安全(safety-critical)的嵌入式C語言程序開發(fā)中,
    發(fā)表于 12-15 06:10

    使用動態(tài)內(nèi)存分配安全嗎

    安全嗎?”為了更加安全穩(wěn)定,美國軍方禁止在C語言程序中使用malloc()使用動態(tài)內(nèi)存分配安全嗎?在C
    發(fā)表于 12-15 07:44

    動態(tài)分配內(nèi)存知識

    最近學(xué)習(xí)動態(tài)分配內(nèi)存 這個程序是我自己編的,呵呵,好有成就感啊... #include stdio.h/*Feng原創(chuàng)...*/ #define N 2 char *GetCity(void
    發(fā)表于 05-28 15:27 ?99次下載

    零矢量動態(tài)分配的-直接轉(zhuǎn)矩控制

    零矢量動態(tài)分配的-直接轉(zhuǎn)矩控制
    發(fā)表于 01-21 11:49 ?1次下載

    動態(tài)內(nèi)存分配的注意事項及本質(zhì)是什么

    C語言中比較重要的就是指針,它可以用來鏈表操作,談到鏈表,很多時候為此分配內(nèi)存采用動態(tài)分配而不是靜態(tài)分配
    的頭像 發(fā)表于 10-13 15:37 ?3497次閱讀
    <b class='flag-5'>動態(tài)內(nèi)存</b><b class='flag-5'>分配</b>的注意事項及本質(zhì)是什么

    51單片機內(nèi)存動態(tài)分配

    51單片機內(nèi)存動態(tài)分配序言最近玩51單片機碰到一個問題,51中malloc函數(shù)并不能像在PC上一樣正常運行,這涉及到了內(nèi)存池的概念。下面就來演示一下如何在單片機上也可正常使用動態(tài)內(nèi)存
    發(fā)表于 11-12 14:36 ?11次下載
    51單片機<b class='flag-5'>內(nèi)存</b><b class='flag-5'>動態(tài)分配</b>
    RM新时代网站-首页