一個由C/C 編譯的程序占用的內存分為以下幾個部分:
棧區(stack):由編譯器自動分配釋放 ,存放函數的參數值,局部變量的值等。其操作方式類似于數據結構中的棧。
堆區(heap):一般由程序員分配釋放, 若程序員不釋放,程序結束時可能由OS回收 。注意它與數據結構中的堆是兩回事,分配方式倒是類似于鏈表,呵呵。
全局區(靜態區)(static):全局變量和靜態變量的存儲是放在一塊的,初始化的全局變量和靜態變量在一塊區域, 未初始化的全局變量和未初始化的靜態變量在相鄰的另一塊區域。- 程序結束后由系統釋放。
文字常量區:常量字符串就是放在這里的。程序結束后由系統釋放。
程序代碼區:存放函數體的二進制代碼。
申請方式:
棧區(stack):
由系統自動分配。例如,聲明在函數中一個局部變量 int b;
系統自動在棧中為b開辟空間
堆區(heap):
需要程序員自己申請,并指明大小,在c中malloc函數
如p1 = (char *)malloc(10);
在C 中用new運算符
如p2 = new char[10];
但是注意p1、p2本身是在棧中的。
審核編輯 黃宇
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
編譯
+關注
關注
0文章
694瀏覽量
35158 -
STACK
+關注
關注
0文章
15瀏覽量
3530
發布評論請先 登錄
相關推薦
熱點推薦
LMP93601:用于熱電堆傳感器的高性能模擬前端
LMP93601:用于熱電堆傳感器的高性能模擬前端 在電子設計領域,熱電堆傳感器的應用日益廣泛,像建筑自動化里的 HVAC 系統控制、手勢識別等。而與之匹配的模擬前端(AFE)芯片的性能,對整個系統
IPv6 Only 進入倒計時 ,單棧替代雙棧成網絡演進必然選擇
2025年末,中國工程院院士鄔賀銓在“2026ICT行業趨勢年會”上強調“雙棧是過去的妥協,IPv6Only才是未來的必然”,這一判斷精準點出了全球網絡協議演進的核心方向。隨著技術兼容方案成熟、政策
Amphenol ZTPD - 2210數字輸出熱電堆探測器深度解析
Amphenol ZTPD - 2210數字輸出熱電堆探測器深度解析 在電子工程領域,傳感器是獲取環境信息的關鍵部件。今天,我們要深入探討Amphenol Advanced Sensors的ZTPD
使用Keil MicroLIB時自動設置堆大小
Keil編譯項目,如果使用微庫MicroLIB,就可以使用malloc。微庫內部位置一個堆管理模塊。
芯片的RAM大小是固定了的,前面分為全局變量,后面分給堆和棧,這是一般開發方式。
但是我們在開發
發表于 12-09 07:04
Stack棧到底用來干嘛的呢?
Stack_Size就是棧大小,0x00000400就是代表有1K(0x400/1024)的大小。
那這個棧到底用來干嘛的呢?
比如說我們函數的形參、以及函數里定義的局部變量就是存儲在棧里,所以
發表于 12-01 08:04
在Keil5中查看棧大小
1、修改啟動文件:
方法說明:棧大小通常在啟動文件中定義。可以通過直接修改這個文件中的Stack_Size變量來調整棧大小。
操作步驟:找到對應的啟動文件,定位到Stack_Size的定義處,修改
發表于 11-14 06:32
如何在應用程序調試期間分析棧和堆使用情況
隨著 AMD Vitis 統一軟件平臺 2021.2 的發布,Vitis 引入了一個 Tcl 腳本,用于在應用程序運行的特定時間點協助查找棧和堆的內存使用情況。該腳本已延續到后續的 Vitis 版本
這個棧堆大小我設置256就是start error 設置128一會start success 一會start error是什么情況?
error\");
}
return 0;
}
這個棧堆大小我設置256就是start error 設置128一會start success 一會start error是什么情況
發表于 09-29 07:44
水泥廠堆料機與取料機無線連鎖控制解決方案實施案例
在水泥廠的生產流程中,堆料機和取料機協同作業至關重要。某大型水泥廠的堆料區和取料區相隔一定距離,以往采用有線連接實現二者的連鎖控制,但隨著生產規模擴大和設備老化,問題頻發。
自動駕駛中常提的“全棧”是個啥?有必要“全棧”嗎?
[首發于智駕最前沿微信公眾號]隨著自動駕駛技術落地,越來越多車企公布了自己的自動駕駛方案,在很多車企的宣傳中,會使用“全棧自研”的說法來證明自己的實力。所謂“全棧”,字面意思是全套技術棧的自主開發
如何理解整流橋堆?
核心概念一句話:整流橋堆,就是把“來回跑”的交流電,變成“只往一個方向跑”的直流電的“交通警察”。 一、為什么需要整流? 想象一下水流: 交流電 (AC): 像海水潮汐,一會兒涌向岸邊(正方
深入淺出解析低功耗藍牙協議棧
Bluetooth LE協議棧為什么要分層?怎么理解Bluetooth LE“連接”?如果Bluetooth LE協議只有ATT層沒有GATT層會發生什么? 一、協議棧框架 一般而言,我們把某個
橋堆:整流電路的“中流砥柱”
大家好!今天我們來聊一聊電子電路中一個非常重要的元器件——橋堆。無論是家用電器、工業設備,還是通信設備,橋堆都扮演著不可或缺的角色。它雖然看起來不起眼,但卻是整流電路的“中流砥柱”。那么,橋堆到底是
堆和棧的區別
評論