娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2025年01月16日(星期四)

正在發(fā)生

2020年01月16日 | STM32內(nèi)存與堆棧

發(fā)布者:咖啡小熊 來源: eefocus關(guān)鍵字:STM32  內(nèi)存  堆棧 手機看文章 掃描二維碼
隨時隨地手機看文章

內(nèi)存基本構(gòu)成

①  可編程內(nèi)存在基本上分為這樣的幾大部分:靜態(tài)存儲區(qū)、堆區(qū)和棧區(qū)。他們的功能不同,對他們使用方式也就不同。

②  靜態(tài)存儲區(qū):內(nèi)存在程序編譯的時候就已經(jīng)分配好了,這塊內(nèi)存在程序的整個運行期間都存在。它主要存放靜態(tài)變量、全局變量和常量。

③  棧區(qū):在執(zhí)行函數(shù)時,函數(shù)內(nèi)局部變量的存儲單元都可以在棧上創(chuàng)建,函數(shù)執(zhí)行結(jié)束時這些存儲單元自動被釋放。棧內(nèi)存分配運算內(nèi)置于處理器的指令集中,效率高,但是分配的內(nèi)存容量有限。棧空間用于局部變量、函數(shù)調(diào)用、函數(shù)的參數(shù)等。

④  堆區(qū):亦稱動態(tài)內(nèi)存分配。程序在運行的時候用malloc或new申請任意大小的內(nèi)存,程序員自己負責(zé)在適當?shù)臅r候用free或delete釋放內(nèi)存,動態(tài)內(nèi)存的生存期可以由我們決定,如果我們不釋放內(nèi)存,程序?qū)⒃谧詈蟛裴尫艅討B(tài)內(nèi)存。但是,良好的編程習(xí)慣是:如果某動態(tài)內(nèi)存不在使用,需要將其釋放掉,否則,我們認為發(fā)生了內(nèi)存泄漏現(xiàn)象。(從內(nèi)存區(qū)域的起始地址開始分配給各個全局變量和靜態(tài)變量:0x200000004)

 

按照這個說法,在startup_stm32f10x_hd文件里面設(shè)置了:

Heap_Size     EQU  0x00000000

 

也就是沒有任何動態(tài)內(nèi)除分配。

這樣,內(nèi)存=靜態(tài)存儲區(qū)+棧區(qū)

不存在堆!!!!!

因為沒有用malloc來動態(tài)分配內(nèi)存,所以提到的一切堆區(qū),其實就是靜態(tài)內(nèi)存區(qū)。

 

另外,經(jīng)過測試,確實是這樣。

STM32的內(nèi)存分配,應(yīng)該分為兩種情況:

1、使用了系統(tǒng)的malloc;

2、未使用系統(tǒng)的malloc。

 

第一種情況(使用malloc)

STM32的內(nèi)存分配規(guī)律:從0x20000000開始依次為:靜態(tài)存儲區(qū)+堆區(qū)+棧區(qū);

 

第二種情況(不使用malloc)

STM32的內(nèi)存分配規(guī)律:從0x20000000開始依次為:靜態(tài)存儲區(qū)+棧區(qū);

 

第二種情況不存在堆區(qū)

所以,一般對于開發(fā)板歷程,實際上,沒有所謂的堆區(qū)的概念,而僅僅是:靜態(tài)存儲區(qū)+棧區(qū)。無論哪種情況,所有的全局變量,包括靜態(tài)變量之類的,全部存儲在靜態(tài)存儲區(qū)。緊跟靜態(tài)存儲區(qū)之后的,是堆區(qū)(如沒使用到malloc,則沒有該區(qū)),之后是棧區(qū)。

此博文借鑒了原子哥的,發(fā)表此篇以此記錄

 

補充知識:C語言

(1)棧區(qū)(stack):由編譯器自動分配和釋放,存放函數(shù)的參數(shù)值、局部變量的值等,其操作方式類似于數(shù)據(jù)結(jié)構(gòu)中的棧。(切記不要在函數(shù)里面放N多局部變量,尤其是大數(shù)組)

(2)堆區(qū)(heap):一般由程序員分配和釋放,若程序員不釋放,程序結(jié)束時可能由操作系統(tǒng)回收,分配的方式類似于數(shù)據(jù)結(jié)構(gòu)中的鏈表。

(3)全局區(qū)(靜態(tài)區(qū))(static):全局變量和靜態(tài)變量的存儲是放在一起的,初始化的全局變量和靜態(tài)變量在一塊區(qū)域;未初始化的全局變量和未初始化的靜態(tài)變量在相鄰的另一塊區(qū)域。程序結(jié)束后由系統(tǒng)自動釋放。

(4)文字常量區(qū):常量字符串就是存放在這里的;

(5)程序代碼區(qū)(ROM):存放函數(shù)體的二進制代碼。

(6)堆是向上增長,棧是向下增長。

 

//STM32查找棧增長方向,結(jié)果保存在stack_dir里面
//0,向下增長;1,向上增長.
staticu8 stack_dir;

//查找棧增長方向,結(jié)果保存在stack_dir里面.
voidfind_stack_direction(void)
{
   static u8 *addr=NULL; //用于存放第一個dummy的地址。
   u8dummy;              //用于獲取棧地址 
   if(addr==NULL)    //第一次進入
   {                          
       addr=&dummy;     //保存dummy的地址
       find_stack_direction ();  //遞歸 
   }else               //第二次進入 
 {  
       if(&dummy>addr)stack_dir=1; //第二次dummy的地址大于第一次dummy,那么說明棧增長方向是向上的. 
       else stack_dir=0;          //第二次dummy的地址小于第一次dummy,那么說明棧增長方向是向下的.  
 }

一般CPU的棧增長方向都是向下的

 

大端模式:低位字節(jié)存在高地址上,高位字節(jié)存在低地址上 
小端模式:高位字節(jié)存在高地址上,低位字節(jié)存在低地址上

//CPU到底是大端還是小端,可以通過如下代碼測試:
//CPU大小端
//0,小端模式;1,大端模式.
static u8 cpu_endian;

//獲取CPU大小端模式,結(jié)果保存在cpu_endian里面
void find_cpu_endian(void)

 int x=1;
 if(*(char*)&x==1)cpu_endian=0; //小端模式 
 else cpu_endian=1;    //大端模式  
}
//以上測試,在STM32上,你會得到cpu_endian=0,也就是小端模式.

關(guān)鍵字:STM32  內(nèi)存  堆棧 引用地址:STM32內(nèi)存與堆棧

上一篇:關(guān)于STM32堆棧方面知識點
下一篇:STM32 hex合并及一鍵燒寫

推薦閱讀

  未來已來,“無人時代”就在眼前。日前,中國國防工業(yè)企業(yè)協(xié)會和常州市人民政府在京聯(lián)合召開2018地面無人系統(tǒng)大會新聞發(fā)布會,國家國防科技工業(yè)局科學(xué)技術(shù)委員會副主任、中國國防工業(yè)企業(yè)協(xié)會會長劉東奎表示,人工智能已經(jīng)成國際競爭新焦點,并將引發(fā)經(jīng)濟結(jié)構(gòu)重大變革。  圖為國家國防科技工業(yè)局科學(xué)技術(shù)委員會副主任、中國國防工業(yè)企業(yè)協(xié)會會長、20...
從歷史上看,工業(yè)機器人領(lǐng)域傳統(tǒng)上一直由日本和歐洲的供應(yīng)商主導(dǎo),而商業(yè)機器人技術(shù)一直是美國和歐洲機器人初創(chuàng)企業(yè)的大本營。然而,最近的發(fā)展表明,機器人產(chǎn)業(yè)正在中國蓬勃發(fā)展,中國涌現(xiàn)出成千上萬的本地機器人公司。據(jù)市場前瞻咨詢公司ABI Research表示, 我們不能再忽視一些中國的大型機器人公司,比如賽格威、人工智能初創(chuàng)公司圖靈機器人、Ecovacs...
移動應(yīng)用、基礎(chǔ)設(shè)施與航空航天、國防應(yīng)用中 RF 解決方案的領(lǐng)先供應(yīng)商 Qorvo?, Inc.推出突破性的物聯(lián)網(wǎng)收發(fā)器 Qorvo QPG7015M,這款收發(fā)器支持所有低功率開源標準智能家居技術(shù)同時運行。這款收發(fā)器結(jié)合 Qorvo 獲得專利的天線分集和獨有的接收器設(shè)計,在覆蓋范圍、干擾穩(wěn)定性和能耗方面性能出色,有助于大幅簡化物聯(lián)網(wǎng)設(shè)計。 在利用片上系統(tǒng) (SoC)...
小功率晶閘管的電極從外形上可以判別,一般陽極為外殼,陰極的引線要比控制極引線粗而長。如果是其他形式的封裝,不知電極引線時可以用萬用表的電阻擋進行檢測。檢測方法是:將萬用表置于R×1k擋(或R×100擋),將晶閘管其中一端假定為控制極,與黑表筆相接。然后用紅表筆分別接另外兩端,若有一次電阻值較小(正向?qū)ǎ硪淮坞娮柚递^大(反向截止)...

史海拾趣

問答坊 | AI 解惑

Simple socket server 例程 的調(diào)試問題

最近在用Cyclone III FPGA Development Kit 這個板子在調(diào)Simple Socket Sever這個例程,但是好多天了一直不能調(diào)通,網(wǎng)線沒有問題,IP設(shè)置也沒有問題,程序運行顯示初始化也成功了,但是一直ping 不通 。希望有經(jīng)驗的朋友能給予一些指點,先謝謝了! ...…

查看全部問答∨

嵌入式的軟件什么樣得較好

我用quartus ii ,但是軟件功能受限制(網(wǎng)絡(luò)版的),會出現(xiàn)許多莫名其妙得問題 哪位高手指點一下…

查看全部問答∨

VS2005+CE60下調(diào)試程序怎么不能直接下載到NANDFLASH里面去(EVC+CE50可以)?必須加CSIDL_XXX這樣的前綴?NANDFLASH這樣加

VS2005+CE60下調(diào)試程序怎么不能直接下載到NANDFLASH里面去(EVC+CE50可以)?必須加CSIDL_XXX這樣的前綴?NANDFLASH這樣加前綴還是不行啊。…

查看全部問答∨

DM9000傳輸速率問題

目前用dm9000網(wǎng)卡做視頻傳輸,遇到如下情況: 視頻帶寬30kb/s,發(fā)現(xiàn)傳輸一會后網(wǎng)卡就斷網(wǎng)了,以后就連接不上了,除非硬件重啟后才能恢復(fù)。 換用usb無線網(wǎng)卡沒有出現(xiàn)這個問題,而且效果很好。 因此斷定是dm9000網(wǎng)卡驅(qū)動的問題,請問是什么原因,是 ...…

查看全部問答∨

如何讀取連續(xù)內(nèi)存中數(shù)據(jù)??

已知連續(xù)內(nèi)存中分別存放的是幾個不同的變量值,這些變量值時刻變化,如何將這些變量值讀取出來呢?寫到*.txt文件中。 如x存放在內(nèi)存地址為0x08000002中,y在0x08000004中,z在0x08000006中,如何將x,y,z保存到test.txt文件中。…

查看全部問答∨

VxWorks大俠看過來,謝謝~

大家好,我在使用tornado 2.2幫助時遇到了一個問題,想請教一下。 我在tornado界面下選擇菜單“Help”—— >“Manuals index”,出現(xiàn)“Tornado online manuals”界面,在其tag上選擇“Index”,輸入要查找的內(nèi)容“tffsDrv”,然后按下“Display ...…

查看全部問答∨

請教, 精密整流電路問題

請教各位大俠,我的精密整流電路輸出正負不對稱, 當輸入1V時,輸約1.5V, 輸入2V, 輸出約為2.5V.輸入負電壓時, 輸出與輸入相等.  運放用的是 ADTL082A, 正負15V   二極管 SK101AW 不好意思, 圖怎么貼不上去呀.…

查看全部問答∨

【在線視頻】飛凌S3C6410開發(fā)板學(xué)習(xí)指導(dǎo)視頻第一季

本文轉(zhuǎn)引自 飛凌嵌入式 OK6410資料專區(qū)    目前,ARM11開發(fā)板的開發(fā)學(xué)習(xí)教程逐漸豐富起來,但專門針對某塊ARM11開發(fā)板的視頻幾乎沒有。為了更好的讓用戶學(xué)會使用OK6410,我們準備了這套教學(xué)視頻,力圖使用戶更快的入門,加快嵌入式學(xué)習(xí) ...…

查看全部問答∨

自賀HotComm首次參與大規(guī)模作戰(zhàn)請?zhí)嵋庖妦~~

哈哈~~~現(xiàn)在還不知道EMSTM32V1的串口連接,看到下圖終于明白了~~~1.DTR輸出的情況2.RTS輸出的情況從上圖可以看出RS232的連接關(guān)系:DTR(4腳)和DSR(6腳)是連接的.在LPCARM上是作為復(fù)位控制的,為了"兼容",就決定用此腳作為吧~~~RTS(7腳)和CTS(8 ...…

查看全部問答∨

請教高手430編程中的一些問題

static linkID_t sLID[NUM_CONNECTIONS]; static uint8_t sNumCurrentPeers; // callback handler static uint8_t sCB(linkID_t); // work loop semaphores static uint8_t sPeerFrameSem; static uint8_t sJoinSem; static uint8_t sSelfM ...…

查看全部問答∨
小廣播
設(shè)計資源 培訓(xùn) 開發(fā)板 精華推薦

最新單片機文章

 
EEWorld訂閱號

 
EEWorld服務(wù)號

 
汽車開發(fā)圈

 
機器人開發(fā)圈

電子工程世界版權(quán)所有 京ICP證060456號 京ICP備10001474號-1 電信業(yè)務(wù)審批[2006]字第258號函 京公網(wǎng)安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 正镶白旗| 工布江达县| 白沙| 运城市| 彰武县| 徐汇区| 瑞安市| 晴隆县| 安吉县| 阜南县| 固始县| 鹿邑县| 浦东新区| 砀山县| 繁峙县| 南皮县| 大港区| 新闻| 荃湾区| 思茅市| 永善县| 湘阴县| 金山区| 临洮县| 三穗县| 道孚县| 九江县| 霍林郭勒市| 米泉市| 凌云县| 栖霞市| 天镇县| 马关县| 都昌县| 米泉市| 长兴县| 泾川县| 衡阳市| 兴隆县| 枣阳市| 赞皇县|