對於初學者而言,對單片機的記憶體分配往往最讓人頭疼,很多人學了單片機幾年 都不知道單片機內部的記憶體使用情況是如何分配的。要瞭解 ROM、RAM啟動,首先 需要對 鏈接器 Linker 如何分配記憶體有一定的瞭解。 通常,對於棧生長方向向下的單片機,其記憶體一般模型是: 一個進程運行時,所占用的記憶體,可以分 ...
對於初學者而言,對單片機的記憶體分配往往最讓人頭疼,很多人學了單片機幾年 都不知道單片機內部的記憶體使用情況是如何分配的。要瞭解 ROM、RAM啟動,首先 需要對 鏈接器 Linker 如何分配記憶體有一定的瞭解。
通常,對於棧生長方向向下的單片機,其記憶體一般模型是:
一個進程運行時,所占用的記憶體,可以分為如下幾個部分:
1、棧區(stack):由編譯器自動分配釋放,存放函數的參數值,局部變數的值等。
2、堆區(heap):一般由程式員分配釋放,若程式員不釋放,程式結束時可能由OS釋放。
3、全局變數、靜態變數:初始化的全局變數和靜態變數放在一塊區域,未初始化的全局變數和和未初始化的靜態變數在相鄰的的另一塊區域。程式結束後由系統自動釋放。
4、文字常量:常量字元串就是存放在這裡的,程式結束後由系統釋放。
5、程式代碼:存放函數體的二進位代碼。
原文出處http://blog.chinaunix.net/uid-15473693-id-388637.html
---------------------
作者:Z小旋
CSDN原文:https://blog.csdn.net/as480133937/article/details/87608816