chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

C程序中棧空間的使用

單片機(jī)匠人 ? 來(lái)源:?jiǎn)纹瑱C(jī)匠人 ? 作者:?jiǎn)纹瑱C(jī)匠人 ? 2022-04-19 14:41 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

C語(yǔ)言程序中,??臻g是由編譯器管理的,在程序中可以體現(xiàn)棧空間使用的例子是參數(shù)的傳遞、返回值的使用以及自動(dòng)變量的空間。

在運(yùn)行程序的系統(tǒng)中,??臻g是從高地址向低地址增長(zhǎng)的。在程序的執(zhí)行結(jié)果中打印參數(shù)的地址就可以看到參數(shù)地址的關(guān)系。

參數(shù)入棧的順序是:后面的參數(shù)在高地址處,前面的參數(shù)在低地址處。事實(shí)上,進(jìn)入函數(shù)后,第一個(gè)參數(shù)將位于??臻g的最后。因此,程序在按照順序訪問(wèn)參數(shù)的時(shí)候,還是從低地址到高地址的訪問(wèn)。注意:具體參數(shù)將占用多大的棧區(qū)域空間,將由編譯器決定,因?yàn)槿霔V暗臈V羔樅腿霔V蟮臈V羔樦g的內(nèi)容不一定和參數(shù)大小的和一致。

在函數(shù)退出之后,棧指針將返回到函數(shù)進(jìn)入之前的位置。從上面我們得出,在函數(shù)調(diào)用的過(guò)程中,每增加一個(gè)層次,都會(huì)讓程序需要更大的棧空間。

事實(shí)上,在函數(shù)的調(diào)用過(guò)程中,參數(shù)和返回值都將使用??臻g。棧空間的具體規(guī)模是和編譯器有關(guān)系的,可以確定的一點(diǎn)是:一般參數(shù)入棧后,前面的參數(shù)將位于內(nèi)存的低地址,后面的參數(shù)將位于內(nèi)存的高地址。

在程序中,函數(shù)內(nèi)部使用的自動(dòng)變量也是保存在棧區(qū)域的。編譯器在處理自動(dòng)變量的時(shí)候,將在參數(shù)棧區(qū)的后面為自動(dòng)變量分配棧區(qū)域。棧的開辟順序和參數(shù)的順序是一致的。

編譯器只會(huì)為函數(shù)內(nèi)部的自動(dòng)變量在棧上開辟空間,如果函數(shù)內(nèi)部的變量改為靜態(tài)變量,這個(gè)時(shí)候編譯器就不會(huì)為這個(gè)變量在棧上開辟空間了,而是將它放入靜態(tài)的存儲(chǔ)區(qū)內(nèi)。

程序中使用的自動(dòng)局部變量和參數(shù)的類型都是C語(yǔ)言的基本類型,在32位的系統(tǒng)中,int為32位(4字節(jié)),這種變量類型將占用4個(gè)字節(jié)的??臻g。在程序中,可能使用較大的??臻g的變量類型是結(jié)構(gòu)體和數(shù)組。

關(guān)于??臻g的使用,完全是由編譯器來(lái)處理的,在程序中不需要管理?xiàng)?。?dāng)函數(shù)退出之后,函數(shù)棧上的內(nèi)容將被釋放,因此,在函數(shù)跳出后,函數(shù)棧上的內(nèi)容是不能被別的函數(shù)使用的。

內(nèi)層函數(shù)可以使用外層函數(shù)的棧內(nèi)存,但是外層函數(shù)不能使用內(nèi)層函數(shù)的棧內(nèi)存。

自動(dòng)變量的地址不可以作為函數(shù)返回值,但是可以作為參數(shù)傳遞給其他函數(shù)。

審核編輯 :李倩

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

    關(guān)注

    3

    文章

    4421

    瀏覽量

    67819
  • 編譯器
    +關(guān)注

    關(guān)注

    1

    文章

    1672

    瀏覽量

    51889
  • C程序
    +關(guān)注

    關(guān)注

    4

    文章

    255

    瀏覽量

    37682

原文標(biāo)題:C程序中??臻g的使用

文章出處:【微信號(hào):gh_e7f294a514ca,微信公眾號(hào):?jiǎn)纹瑱C(jī)匠人】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    C++與lua聯(lián)合編程

    變化,隨意壓卻不彈出,導(dǎo)致空間被無(wú)情耗盡;或者在 C++ 中分配了內(nèi)存卻沒(méi)有正確地交由 Lua 的 GC 去管理。夏曹俊課程對(duì)
    發(fā)表于 04-19 16:27

    關(guān)于AC696N系列芯片如何壓縮rom空間,AC6965E4程序空間太大如何優(yōu)化?

    一、問(wèn)題簡(jiǎn)介 AC696N系列的芯片,基本上都是內(nèi)置512Kbyte的空間,俗稱rom空間,也可以稱之為合封裝的25Q40 客戶在實(shí)際的開發(fā),會(huì)遇到空間不夠的情況,這個(gè)時(shí)候就要做一些
    發(fā)表于 03-28 22:58

    堆棧的原理揭秘

    寄存器是如何將局部變量的創(chuàng)建和刪除自動(dòng)化起來(lái),從而節(jié)約了程序員大量時(shí)間的: Esp寄存器:存儲(chǔ)頂?shù)刂?Ebp寄存器: 存儲(chǔ)基地址 Esp到ebp地址之間被視為當(dāng)前函數(shù)的
    發(fā)表于 01-23 07:08

    keilc語(yǔ)言的動(dòng)態(tài)分配內(nèi)存

    C程序,通常將內(nèi)存劃分為以下六個(gè)區(qū)域: (1)內(nèi)核區(qū)域。這塊區(qū)域是操作系統(tǒng)的,用戶不能使用。 (2)區(qū)。主要用于存放運(yùn)行函數(shù)而分配的局部變量、函數(shù)參數(shù)、返回?cái)?shù)據(jù)、返回地址等。
    發(fā)表于 01-21 06:04

    聯(lián)想出席足聯(lián)全AI總指揮中心階段性成果匯報(bào)會(huì)

    12月23日,足聯(lián)全AI總指揮中心階段性成果匯報(bào)會(huì)在北京正式召開。與會(huì)人員圍繞全AI賦能中國(guó)體育高質(zhì)量發(fā)展主題,進(jìn)行了深度研討與交流,為體育領(lǐng)域智能化轉(zhuǎn)型注入新動(dòng)能。
    的頭像 發(fā)表于 12-30 11:15 ?744次閱讀

    RDMA設(shè)計(jì)12:融合以太網(wǎng)協(xié)議設(shè)計(jì)1

    RDMA 隊(duì)列并實(shí)現(xiàn) RDMA 指令提交與完成機(jī)制。在 RoCE v2 高速數(shù)據(jù)傳輸系統(tǒng),用戶通過(guò)配置系統(tǒng)控制模塊的寄存器或寄存器組來(lái)實(shí)現(xiàn)隊(duì)列管理和數(shù)據(jù) DMA 請(qǐng)求。融合以太網(wǎng)協(xié)議在獲取相關(guān)指令
    發(fā)表于 12-25 11:39

    嵌入式C語(yǔ)言中各變量存儲(chǔ)位置

    C語(yǔ)言的程序,對(duì)變量的使用還有以下幾點(diǎn)需要注意 1. 體定義的變量通常是在上,不需要在程序
    發(fā)表于 12-25 07:54

    EtherCAT主站協(xié)議EC-Master在ROS(機(jī)器人操作系統(tǒng))的應(yīng)用

    EtherCAT主站協(xié)議EC-Master在ROS(機(jī)器人操作系統(tǒng))的應(yīng)用
    的頭像 發(fā)表于 12-10 14:46 ?628次閱讀
    EtherCAT主站協(xié)議<b class='flag-5'>棧</b>EC-Master在ROS(機(jī)器人操作系統(tǒng))<b class='flag-5'>中</b>的應(yīng)用

    Stack到底用來(lái)干嘛的呢?

    我們?cè)诤瘮?shù)的局部變量、數(shù)組這些不能超過(guò)1K(含嵌套的函數(shù)),否則程序就會(huì)崩潰進(jìn)入hardfaul。 除了這些局部變量以外,還有一些實(shí)時(shí)操作系統(tǒng)的現(xiàn)場(chǎng)保護(hù)、返回地址都是存儲(chǔ)在里面。 還有一點(diǎn)題外話,就是的增長(zhǎng)方向是從高地址到低
    發(fā)表于 12-01 08:04

    堆和的區(qū)別

    一個(gè)由C/C 編譯的程序占用的內(nèi)存分為以下幾個(gè)部分: 區(qū)(stack):由編譯器自動(dòng)分配釋放 ,存放函數(shù)的參數(shù)值,局部變量的值等。其操作方式類似于數(shù)據(jù)結(jié)構(gòu)
    的頭像 發(fā)表于 11-27 18:13 ?1219次閱讀

    C語(yǔ)言程序的結(jié)構(gòu)

    ,87LPC764有4KB的Flash ROM,而筆者的程序量只有2KB多點(diǎn),因而第一個(gè)想法是改用C語(yǔ)言作為主要的開發(fā)語(yǔ)言,應(yīng)該不至于導(dǎo)致代碼空間不夠用。其次,考慮到需要定時(shí)功能的模塊(或稱任務(wù),以下統(tǒng)稱任務(wù)
    發(fā)表于 11-26 08:12

    在Keil5查看大小

    1、修改啟動(dòng)文件: 方法說(shuō)明:大小通常在啟動(dòng)文件定義??梢酝ㄟ^(guò)直接修改這個(gè)文件的Stack_Size變量來(lái)調(diào)整大小。 操作步驟:找到對(duì)應(yīng)的啟動(dòng)文件,定位到Stack_Size的
    發(fā)表于 11-14 06:32

    如何在應(yīng)用程序調(diào)試期間分析和堆使用情況

    ,并在 Unified IDE 仍可使用。本文涵蓋了如何在 Vitis 中使用分析工具在應(yīng)用程序調(diào)試期間對(duì)和堆進(jìn)行監(jiān)控。
    的頭像 發(fā)表于 10-24 16:54 ?1029次閱讀
    如何在應(yīng)用<b class='flag-5'>程序</b>調(diào)試期間分析<b class='flag-5'>棧</b>和堆使用情況

    使用RT-Thread Studio在程序進(jìn)Hardfault時(shí)怎么方便的查看調(diào)用?

    求助各位大神 使用RT-Thread Studio在程序進(jìn)Hardfault時(shí)怎么方便的查看調(diào)用 使用MDK的時(shí)候可以方便的看調(diào)用堆棧,從而很快速的找到問(wèn)題,使用RT-Thread Studio該如何快速找到問(wèn)題呢
    發(fā)表于 10-10 06:54

    自動(dòng)駕駛中常提的“全”是個(gè)啥?有必要“全”嗎?

    和應(yīng)用,涵蓋從底層硬件、感知算法、高精地圖、定位與融合,到?jīng)Q策規(guī)劃、控制執(zhí)行、軟件平臺(tái),乃至整車集成與云端服務(wù)的完整鏈條。對(duì)于希望在激烈的市場(chǎng)競(jìng)爭(zhēng)占據(jù)一席之地的車企和科技公司來(lái)說(shuō),全似乎代表了掌握核心競(jìng)爭(zhēng)
    的頭像 發(fā)表于 08-27 09:43 ?1383次閱讀
    自動(dòng)駕駛中常提的“全<b class='flag-5'>棧</b>”是個(gè)啥?有必要“全<b class='flag-5'>棧</b>”嗎?