一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

C程序中??臻g的使用

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

掃碼添加小助手

加入工程師交流群

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

在運(yùn)行程序的系統(tǒng)中,棧空間是從高地址向低地址增長(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ì)讓程序需要更大的??臻g。

事實(shí)上,在函數(shù)的調(diào)用過(guò)程中,參數(shù)和返回值都將使用??臻g。??臻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ū)域。棧的開(kāi)辟順序和參數(shù)的順序是一致的。

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

程序中使用的自動(dòng)局部變量和參數(shù)的類(lèi)型都是C語(yǔ)言的基本類(lèi)型,在32位的系統(tǒng)中,int為32位(4字節(jié)),這種變量類(lèi)型將占用4個(gè)字節(jié)的??臻g。在程序中,可能使用較大的??臻g的變量類(lèi)型是結(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)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(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

    文章

    4381

    瀏覽量

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

    關(guān)注

    1

    文章

    1662

    瀏覽量

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

    關(guān)注

    4

    文章

    255

    瀏覽量

    36836

原文標(biāo)題:C程序中棧空間的使用

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

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    C語(yǔ)言的歷史及程序介紹

    電子發(fā)燒友網(wǎng)站提供《C語(yǔ)言的歷史及程序介紹.pdf》資料免費(fèi)下載
    發(fā)表于 04-09 16:10 ?0次下載

    使用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ā)表于 04-01 07:32

    如何在 樹(shù)莓派 上編寫(xiě)和運(yùn)行 C 語(yǔ)言程序?

    在本教程,我將討論C編程語(yǔ)言是什么,C編程的用途,以及如何在RaspberryPi上編寫(xiě)和運(yùn)行C程序。本文的目的是為您介紹在Raspber
    的頭像 發(fā)表于 03-25 09:28 ?572次閱讀
    如何在 樹(shù)莓派 上編寫(xiě)和運(yùn)行 <b class='flag-5'>C</b> 語(yǔ)言<b class='flag-5'>程序</b>?

    嵌入式學(xué)習(xí)-飛凌嵌入式ElfBoard ELF 1板卡-內(nèi)核空間與用戶(hù)空間的數(shù)據(jù)拷貝之獲取內(nèi)核空間數(shù)據(jù)

    $ $CC\\ copy_to_user.c -o copy_to_user 將編譯好的應(yīng)用程序拷貝到開(kāi)發(fā)板。 測(cè)試 root@ELF1:~# insmod copy_to_user.ko major
    發(fā)表于 03-21 14:00

    飛凌嵌入式ElfBoard ELF 1板卡-內(nèi)核空間與用戶(hù)空間的數(shù)據(jù)拷貝之獲取內(nèi)核空間數(shù)據(jù)

    :~/work/test/03_內(nèi)核空間與用戶(hù)空間的數(shù)據(jù)拷貝/copy_to_user_app$ $CC\\ copy_to_user.c -o copy_to_user將編譯好的應(yīng)用程序
    發(fā)表于 03-20 11:48

    快速搞懂C語(yǔ)言程序內(nèi)存分區(qū)!

    程序運(yùn)行過(guò)程,操作系統(tǒng)會(huì)根據(jù)程序的需要,將內(nèi)存劃分為多個(gè)功能不同的區(qū)段,以便更高效地管理內(nèi)存資源和確保程序的穩(wěn)定運(yùn)行。不同的內(nèi)存區(qū)段負(fù)責(zé)存儲(chǔ)不同類(lèi)型的數(shù)據(jù)和代碼,涵蓋了從
    的頭像 發(fā)表于 03-14 17:37 ?673次閱讀
    快速搞懂<b class='flag-5'>C</b>語(yǔ)言<b class='flag-5'>程序</b>內(nèi)存分區(qū)!

    請(qǐng)問(wèn)使用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ā)表于 03-03 08:10

    KT142C語(yǔ)音芯片內(nèi)置的320Kbyte空間不夠,還有其他方案嗎?

    這里詳細(xì)描述一下,為什么是320Kbyte 因?yàn)镵T142C芯片內(nèi)置空間實(shí)際是512K,其中有一部分是拿來(lái)存儲(chǔ)程序固件,還有一部分作為記憶存儲(chǔ)空間,剩下的
    的頭像 發(fā)表于 02-19 10:24 ?421次閱讀
    KT142<b class='flag-5'>C</b>語(yǔ)音芯片內(nèi)置的320Kbyte<b class='flag-5'>空間</b>不夠,還有其他方案嗎?

    λ-IO:存儲(chǔ)計(jì)算下的IO設(shè)計(jì)

    動(dòng)機(jī)和背景? ? 存儲(chǔ)計(jì)算存儲(chǔ)資源的充分利用。IO是管理存儲(chǔ)器的的基本組件,包括設(shè)備驅(qū)動(dòng)、塊接口層、文件系統(tǒng),目前一些用戶(hù)空間IO庫(kù)(如SPDK)有效降低了延遲,但是io仍然不可或缺。這是因?yàn)?
    的頭像 發(fā)表于 12-02 10:35 ?637次閱讀
    λ-IO:存儲(chǔ)計(jì)算下的IO<b class='flag-5'>棧</b>設(shè)計(jì)

    AWTK-WEB 快速入門(mén)(1) - C 語(yǔ)言應(yīng)用程序

    導(dǎo)讀AWTK可以使用相同的技術(shù)開(kāi)發(fā)各種平臺(tái)的應(yīng)用程序。有時(shí)我們需要使用Web界面與設(shè)備進(jìn)行交互,本文介紹一下如何使用C語(yǔ)言開(kāi)發(fā)AWTK-WEB應(yīng)用程序。用AWTKDesigner新建
    的頭像 發(fā)表于 11-27 11:46 ?724次閱讀
    AWTK-WEB 快速入門(mén)(1) - <b class='flag-5'>C</b> 語(yǔ)言應(yīng)用<b class='flag-5'>程序</b>

    簡(jiǎn)述大前端技術(shù)的渲染原理

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

    使用OpenVINO GenAI API在C++構(gòu)建AI應(yīng)用程序

    許多桌面應(yīng)用程序是使用 C++ 開(kāi)發(fā)的,而將生成式AI(GenAI)功能集成到這些應(yīng)用程序可能會(huì)很具有挑戰(zhàn)性,尤其是因?yàn)槭褂孟?Hugging Face 這樣的 Python 庫(kù)的復(fù)
    的頭像 發(fā)表于 10-12 09:36 ?1135次閱讀
    使用OpenVINO GenAI API在<b class='flag-5'>C</b>++<b class='flag-5'>中</b>構(gòu)建AI應(yīng)用<b class='flag-5'>程序</b>

    Linux網(wǎng)絡(luò)協(xié)議的實(shí)現(xiàn)

    網(wǎng)絡(luò)協(xié)議是操作系統(tǒng)核心的一個(gè)重要組成部分,負(fù)責(zé)管理網(wǎng)絡(luò)通信中的數(shù)據(jù)包處理。在 Linux 操作系統(tǒng),網(wǎng)絡(luò)協(xié)議(Network Stack)負(fù)責(zé)實(shí)現(xiàn) TCP/IP 協(xié)議簇,處理應(yīng)用程序
    的頭像 發(fā)表于 09-10 09:51 ?709次閱讀
    Linux網(wǎng)絡(luò)協(xié)議<b class='flag-5'>棧</b>的實(shí)現(xiàn)

    linux驅(qū)動(dòng)程序運(yùn)行在什么空間

    Linux 驅(qū)動(dòng)程序是操作系統(tǒng)的一部分,負(fù)責(zé)管理硬件設(shè)備與操作系統(tǒng)之間的交互。驅(qū)動(dòng)程序運(yùn)行在內(nèi)核空間(Kernel Space),這是操作系統(tǒng)的核心部分,與用戶(hù)空間(User Spac
    的頭像 發(fā)表于 08-30 14:37 ?915次閱讀

    技術(shù)干貨驛站 ▏深入理解C語(yǔ)言:掌握程序結(jié)構(gòu)知識(shí)

    在計(jì)算機(jī)編程的世界,C語(yǔ)言被廣泛認(rèn)可為一門(mén)強(qiáng)大而高效的編程語(yǔ)言,其簡(jiǎn)潔的語(yǔ)法和直接的指令使得它成為了許多程序員的首選。了解C語(yǔ)言的程序結(jié)構(gòu)
    的頭像 發(fā)表于 07-27 08:45 ?1861次閱讀
    技術(shù)干貨驛站 ▏深入理解<b class='flag-5'>C</b>語(yǔ)言:掌握<b class='flag-5'>程序</b>結(jié)構(gòu)知識(shí)