色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

C程序中棧空間的使用

單片機匠人 ? 來源:單片機匠人 ? 作者:單片機匠人 ? 2022-04-19 14:41 ? 次閱讀

C語言程序中,棧空間是由編譯器管理的,在程序中可以體現棧空間使用的例子是參數的傳遞、返回值的使用以及自動變量的空間。

在運行程序的系統中,棧空間是從高地址向低地址增長的。在程序的執行結果中打印參數的地址就可以看到參數地址的關系。

參數入棧的順序是:后面的參數在高地址處,前面的參數在低地址處。事實上,進入函數后,第一個參數將位于棧空間的最后。因此,程序在按照順序訪問參數的時候,還是從低地址到高地址的訪問。注意:具體參數將占用多大的棧區域空間,將由編譯器決定,因為入棧之前的棧指針和入棧之后的棧指針之間的內容不一定和參數大小的和一致。

在函數退出之后,棧指針將返回到函數進入之前的位置。從上面我們得出,在函數調用的過程中,每增加一個層次,都會讓程序需要更大的棧空間。

事實上,在函數的調用過程中,參數和返回值都將使用棧空間。棧空間的具體規模是和編譯器有關系的,可以確定的一點是:一般參數入棧后,前面的參數將位于內存的低地址,后面的參數將位于內存的高地址。

在程序中,函數內部使用的自動變量也是保存在棧區域的。編譯器在處理自動變量的時候,將在參數棧區的后面為自動變量分配棧區域。棧的開辟順序和參數的順序是一致的。

編譯器只會為函數內部的自動變量在棧上開辟空間,如果函數內部的變量改為靜態變量,這個時候編譯器就不會為這個變量在棧上開辟空間了,而是將它放入靜態的存儲區內。

程序中使用的自動局部變量和參數的類型都是C語言的基本類型,在32位的系統中,int為32位(4字節),這種變量類型將占用4個字節的棧空間。在程序中,可能使用較大的棧空間的變量類型是結構體和數組。

關于棧空間的使用,完全是由編譯器來處理的,在程序中不需要管理棧。當函數退出之后,函數棧上的內容將被釋放,因此,在函數跳出后,函數棧上的內容是不能被別的函數使用的。

內層函數可以使用外層函數的棧內存,但是外層函數不能使用內層函數的棧內存。

自動變量的地址不可以作為函數返回值,但是可以作為參數傳遞給其他函數。

審核編輯 :李倩

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 函數
    +關注

    關注

    3

    文章

    4333

    瀏覽量

    62688
  • 編譯器
    +關注

    關注

    1

    文章

    1634

    瀏覽量

    49153
  • C程序
    +關注

    關注

    4

    文章

    254

    瀏覽量

    36045

原文標題:C程序中棧空間的使用

文章出處:【微信號:gh_e7f294a514ca,微信公眾號:單片機匠人】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    λ-IO:存儲計算下的IO設計

    動機和背景? ? 存儲計算存儲資源的充分利用。IO是管理存儲器的的基本組件,包括設備驅動、塊接口層、文件系統,目前一些用戶空間IO庫(如SPDK)有效降低了延遲,但是io仍然不可或缺。這是因為1
    的頭像 發表于 12-02 10:35 ?212次閱讀
    λ-IO:存儲計算下的IO<b class='flag-5'>棧</b>設計

    AWTK-WEB 快速入門(1) - C 語言應用程序

    導讀AWTK可以使用相同的技術開發各種平臺的應用程序。有時我們需要使用Web界面與設備進行交互,本文介紹一下如何使用C語言開發AWTK-WEB應用程序。用AWTKDesigner新建
    的頭像 發表于 11-27 11:46 ?217次閱讀
    AWTK-WEB 快速入門(1) - <b class='flag-5'>C</b> 語言應用<b class='flag-5'>程序</b>

    簡述大前端技術的渲染原理

    應用開發:Android、iOS、鴻蒙(HarmonyOS)等; ?Web前端框架:Vue、React、Angular等; ?小程序開發:微信小程序、京東小程序、支付寶小程序等; ?跨
    的頭像 發表于 11-07 10:11 ?229次閱讀

    使用OpenVINO GenAI API在C++構建AI應用程序

    許多桌面應用程序是使用 C++ 開發的,而將生成式AI(GenAI)功能集成到這些應用程序可能會很具有挑戰性,尤其是因為使用像 Hugging Face 這樣的 Python 庫的復
    的頭像 發表于 10-12 09:36 ?390次閱讀
    使用OpenVINO GenAI API在<b class='flag-5'>C</b>++<b class='flag-5'>中</b>構建AI應用<b class='flag-5'>程序</b>

    Linux網絡協議的實現

    網絡協議是操作系統核心的一個重要組成部分,負責管理網絡通信中的數據包處理。在 Linux 操作系統,網絡協議(Network Stack)負責實現 TCP/IP 協議簇,處理應用程序
    的頭像 發表于 09-10 09:51 ?320次閱讀
    Linux網絡協議<b class='flag-5'>棧</b>的實現

    linux驅動程序運行在什么空間

    Linux 驅動程序是操作系統的一部分,負責管理硬件設備與操作系統之間的交互。驅動程序運行在內核空間(Kernel Space),這是操作系統的核心部分,與用戶空間(User Spac
    的頭像 發表于 08-30 14:37 ?439次閱讀

    最簡單的C程序設計

    電子發燒友網站提供《最簡單的C程序設計.pptx》資料免費下載
    發表于 05-28 16:41 ?10次下載

    請問FW OTA二進制文件是否包含應用程序和BT/程序庫?

    你好,先生: 因為英飛凌仍在不斷更新 BT 和庫。 那么 如果客戶在第一個版本中有 OTA 功能。 FW OTA 二進制文件是否包含應用程序和 BT /程序庫?
    發表于 05-20 07:28

    STM32啟動文件大小根據什么設置的呢?

    大神們,STM32啟動文件大小根據什么設置的呢?我每次都是設置一個大概,但是這樣總感覺不安全有沒有高手指點一二,感激不盡。
    發表于 04-24 08:01

    物聯數據網關是什么?

    物聯數據網關就是物聯網智能網關。 物聯數據網關是物聯網架構的重要組件之一。它是連接物聯網設備和云平臺的中間設備,負責將物聯網設備采集到的數據傳輸到云平臺,并將云平臺下發的指令傳輸給物聯網設備
    的頭像 發表于 03-29 17:10 ?327次閱讀

    C語言內存泄漏問題原理

    內存泄漏問題只有在使用堆內存的時候才會出現,內存不存在內存泄漏問題,因為內存會自動分配和釋放。C語言代碼堆內存的申請函數是malloc。
    發表于 03-19 11:38 ?530次閱讀
    <b class='flag-5'>C</b>語言內存泄漏問題原理

    STM32H743如何讓malloc自動分配到外部RAM呢?

    本人試過在進入main之前修改啟動文件,增加SDRAM的初始化,并且將空間指定在內部防止初始化錯誤,程序還是死在Hardfault_Handler。還有什么辦法可以將malloc自動分配到外部RAM
    發表于 03-13 07:14

    基于嵌入式OS的LwIP協議

    設計通信協議程序,需要具備內存管理、任務管理、進程間通信、信號量、時鐘、定時處理等功能,從頭開始難度巨大,而且容易出錯。
    發表于 02-03 16:19 ?849次閱讀
    基于嵌入式OS的LwIP協議<b class='flag-5'>棧</b>

    堆和的區別和使用注意事項

    堆和是在計算機科學中廣泛使用的兩種數據結構,它們具有不同的用途和特點。堆和的區別涉及到內存分配、訪問方式、數據存儲等方面。在使用堆和時,還需要注意一些細節,以確保程序的正確性和效
    的頭像 發表于 01-18 17:24 ?2238次閱讀

    C語言:指針內存是如何存放變量

    程序定義一個變量,那么在程序編譯的過程,系統會根據你定義變量的類型來分配「相應尺寸」的內存空間。那么如果要使用這個變量,只需要用變量名
    發表于 01-08 10:14 ?486次閱讀
    主站蜘蛛池模板: 超碰在线视频 免费| 绝色娇嫩美人妻老师| 久久精品国产免费| 无码国产成人午夜在线观看不卡| 免费毛片试看| p影院永久免费| 天天干夜夜叭| 久见久热 这里只有精品| 69国产精品成人无码视频| 人人听力网mp3下载| 国产精品久久人妻拍拍水牛影视| 亚洲成 人a影院青久在线观看| 久久久久久九九| 草莓视频免费看| 亚洲欧洲日产国产 最新| 年轻夫妇韩剧中文版免费观看| 囯产精品一区二区三区线| 亚洲日韩视频免费观看| 欧美亚洲国产激情一区二区| 国产乱妇乱子在线播视频播放网站 | 亚洲AV国产精品无码精| 两个人的视频日本在线观看完整| 不卡无线在一二三区| 亚洲精品无码成人AAA片| 欧美肥婆性生活| 黑丝女仆恋上我| 吃胸亲吻吃奶摸下面免费视频| 亚洲视频国产在线精品| 日本另类xxxx| 久久综合九色| 国产色偷偷男人的天堂| 99精品在线| 亚洲欧美另类无码专区| 欧美性xxxx18| 久久精品中文字幕| 国产精品自在在线午夜精品| 97精品视频| 一二三四高清中文版视频| 同时和两老师双飞| 琪琪see色原网色原网站| 久久亚洲精品中文字幕|