靜態存儲
① 何為靜態存儲器、動態存儲器,它們的區別是什麼
靜態存儲器與動態存儲器主要性能比較如下表:
靜態和動態存儲器晶元特性比較
SRAM DRAM
存儲信息 觸發器 電容
破壞性讀出 非 是
需要刷新 不要 需要
送行列地址 同時送 分兩次送
運行速度 快 慢
集成度 低 高
發熱量 大 小
存儲成本 高 低
動態存儲器的定期刷新:在不進行讀寫操作時,DRAM 存儲器的各單元處於斷電狀態,由於漏電的存在,保存在電容CS 上的電荷會慢慢地漏掉,為此必須定時予以補充,稱為刷新操作
② 什麼是靜態存儲區和動態存儲區啊
1. 全局變數和靜態數據放在靜態存儲區,生命周期為從申請到程序退出。因此局部變數若定義為static,則存儲在靜態存儲區,否則存儲在函數的棧內,生命周期為本函數內。
2 動態存儲放自動變數和局部變數
③ 在C語言中,什麼是動態存儲,什麼是靜態存儲
動態存儲是auto關鍵字,例如我們定義的int a; 默認就是動態存儲,具體應該是 auto int a;一般是用於函數參數,局部變數,超出作用域范圍會失效,變數產生在動態存儲區
靜態存儲時static關鍵字,例如,我們定義一個 static int a; 就是存儲在靜態存儲區,相當於一個全局變數
一樓的理解出現了問題
④ C語言動態和靜態存儲類別的區別
SRAM的特點是工作速度快,只要電源不撤除,寫入SRAM的信息就不會消失,不需要刷新電路,同時在讀出時不破壞原來存放的信息,一經寫入可多次讀出,但集成度較低,功耗較大。SRAM一般用來作為計算機中的高速緩沖存儲器(Cache)。 DRAM是動態隨機存儲器(Dynamic Random Access Memory),它是利用場效應管的柵極對其襯底間的分布電容來保存信息,以存儲電荷的多少,即電容端電壓的高低來表示「1」和「0」。DRAM每個存儲單元所需的場效應管較少,常見的有4管,3管和單管型DRAM。因此它的集成度較高,功耗也較低,但缺點是保存在DRAM中的信息__場效應管柵極分布電容里的信息隨著電容器的漏電而會逐漸消失,一般信息保存時間為2ms左右。為了保存DRAM中的信息,必須每隔1~2ms對其刷新一次。因此,採用 DRAM的計算機必須配置動態刷新電路,防止信息丟失。DRAM一般用作計算機中的主存儲器。
⑤ 靜態存儲區
3個a不會沖突。
這里涉及幾個方面的知識:
1. 全局變數和靜態數據放在靜態存儲區,生命周期為從申請到程序退出。因此局部變數若定義為static,則存儲在靜態存儲區,否則存儲在函數的棧內,生命周期為本函數內。
2. 全局變數和局部變數的作用域,全局變數為從申請到整個程序結束,局部變數為從申請到本{}范圍內。
3. 局部變數對全局變數的屏蔽。若在本函數內定義的變數與全局變數同名,則將全局變數屏蔽,使用時為內部定義的局部變數。
4. 定義為static類型的局部變數,再次進入該函數,可以使用保留的結果。
下面的程序可以幫助理解:
#include<stdio.h>
int a = 1;
void fun()
{
static int a =3;
int b = 1;
printf("%d, %d\n", a, b);
a++;
b++;
}
int main()
{
printf("%d\n", a); /* global a */
static int a = 2;
printf("%d\n", a); /* static a in main */
fun(); /* static a in fun */
fun(); /* static a in fun */
return 0;
}
運行結果為:
1 /* 全局變數a */
2 /* 因為定義了main內的局部變數static int a,全局變數a被屏蔽,列印的為main局部變數a */
3, 1 /* 因為定義了fun內的局部變數static int a,全局變數a被屏蔽,列印的為fun內的局部變數a。 b是局部變數,列印為1 */
4, 1 /* 因為static的生命周期為整個程序,再次進入fun是a的值可以被保留,再次調用列印的值編程了3+1=4。b因為是在棧內,函數退出後空間被釋放,再次進入是重新申請的空間,結果仍為新初始化的值1 */
⑥ 靜態存儲器與動態存儲器的定義是什麼
靜態存儲器是指依靠雙穩態觸發器的兩個穩定狀態保存信息的存儲器。雙穩態電路是有源器件,需要電源才能工作,只要電源正常,就能長期穩定的保存信息,所以稱為靜態存儲器。如果斷電,信息將會丟失,屬於揮發性存儲器,或稱易失性。
動態存儲器是指在指定功能或應用軟體之間共享的存儲器。如果一個或兩個應用軟體佔用了所有存儲器空間,此時將無法為其他應用軟體分配存儲器空間。需要由存儲器控制電路按一定周期對存儲器刷新,才能維系數據保存。
(6)靜態存儲擴展閱讀:
動態存儲器的工作原理
動態RAM是由許多基本存儲元按照行和列地址引腳復用來組成的。在3管動態RAM電路中,讀選擇線和寫選擇線是分開的,讀數據線和寫數據線也是分開的。
寫操作時,寫選擇線為"1",Q1導通,要寫入的數據通過Q1送到Q2的柵極,並通過柵極電容在一定時間內保持信息。
讀操作時,先通過公用的預充電管Q4使讀數據線上的分布電容CD充電,當讀選擇線為高電平有效時,Q3處於可導通的狀態。若原來存有"1",則Q2導通,讀數據線的分布電容CD通過Q3、Q2放電。此時讀得的信息為"0",正好和原存信息相反。
可見,對這樣的存儲電路,讀得的信息和原來存入的信息正好相反,所以要通過讀出放大器進行反向再送往數據匯流排。
⑦ 什麼叫做靜態存儲器它依靠什麼存儲信息
靜態存儲器是在計算機的運行過程中不需要刷新的半導體存儲器,一旦通電,就長期保存信息。它是依靠觸發器的兩個穩定狀態來存儲信息的。
http://www.sgrtvu.net.cn/jx_data/lg_data/czs/hbyy/xt1.htm
這里有基本答案````
把XT1改成XTX就可以看到相關的答案
⑧ 靜態存儲區和常量存儲區有什麼區別
一、靜態存儲區和常量存儲區的區別:
1、靜態存儲區,全局變數和靜態變數被分配到同一塊內存中;常量存儲區,這是一塊比較特殊的存儲區,他們裡面存放的是常量,是不允許修改的。
2、靜態存儲是main函數運行前分配內存並初始化;常量存儲是固化在執行文件上的數據。棧的方向和平台有關,一般來說,windows由高地址向低地址增長,linux相反,但linux演變出來的操作系統不排除有特殊情況。
3、常量存儲區裡面的數據是放在代碼段里的,不佔內存。靜態存儲區是在內存空間中的,在其所屬的類(或文件)中是全局的
二、靜態存儲區和常量存儲區介紹
1、靜態存儲區:所有的靜態對象,全局對象都於靜態存儲區分配,全局變數和靜態變數被分配到同一塊內存中,在以前的 C 語言中,全局變數又分為初始化的和未初始化的(初始化的全局變數和靜態變數在一塊區域,未初始化的全局變數與靜態變數在相鄰的另一塊區域,同時未被初始化的對象存儲區可以通過 void* 來訪問和操縱,程序結束後由系統自行釋放),在 C++ 裡面沒有這個區分了,他們共同佔用同一塊內存區。
2、常量存儲區:這是一塊比較特殊的存儲區,他們裡面存放的是常量,不允許修改
三、注意事項:常量字元串都存放在靜態存儲區,返回的是常量字元串的首地址.
⑨ 靜態存儲和動態存儲的區別
1. 靜態內存
靜態內存是指在程序開始運行時由編譯器分配的內存,它的分配是在程序開始編譯時完成的,不佔用CPU資源。
程序中的各種變數,在編譯時系統已經為其分配了所需的內存空間,當該變數在作用域內使用完畢時,系統會
自動釋放所佔用的內存空間。
變數的分配與釋放,都無須程序員自行考慮。
基本類型,數組
2. 動態內存
用戶無法確定空間大小,或者空間太大,棧上無法分配時,會採用動態內存分配。
處理器不工作,電腦什麼都做不了。
處理器的工作就是處理指令(多條指令就構成一個程序)。
處理器從內存中取指令集(程序)。
問題是如果斷電的話,內存中的指令就會丟失。因而內存歸類為「易失性」介質。
所以我們要把程序、數據存儲在不易失性的介質中,比如硬碟和光碟。
⑩ 什麼叫靜態轉儲
靜態存儲方式是指在程序運行期間分配固定的存儲空間的方式。變數的存儲方式可分為:「靜態存儲」和「動態存儲」兩種。
靜態存儲變數通常是在變數定義時就分定存儲單元並一直保持不變,直至整個程序結束。全局變數即屬於此類存儲方式。動態存儲變數是在程序執行過程中,使用它時才分配存儲單元,使用完畢立即釋放。
數據存儲
數據存儲是數據流在加工過程中產生的臨時文件或加工過程中需要查找的信息。數據以某種格式記錄在計算機內部或外部存儲媒介上。
數據存儲要命名,這種命名要反映信息特徵的組成含義。數據流反映了系統中流動的數據,表現出動態數據的特徵;數據存儲反映系統中靜止的數據,表現出靜態數據的特徵。