動態存儲於靜態存儲區別
A. 靜態存儲和動態存儲的區別
區別
a)
靜態內存分配在編譯時完成,不佔用CPU資源;
動態內存分配在運行時,分配與釋放都佔用CPU資源。
b)
靜態內存在棧(stack)上分配;
動態內存在堆(heap)上分配。
c)
動態內存分配需要指針和引用類型支持,靜態不需要。
d)
靜態內存分配是按計劃分配,由編譯器負責;
動態內存分配是按需分配,由程序員負責。
B. 什麼是靜態存儲區和動態存儲區啊
1. 全局變數和靜態數據放在靜態存儲區,生命周期為從申請到程序退出。因此局部變數若定義為static,則存儲在靜態存儲區,否則存儲在函數的棧內,生命周期為本函數內。
2 動態存儲放自動變數和局部變數
C. 靜態存儲分配和動態存儲分配之間有什麼不同 編譯原理
動態存儲方式
所謂動態存儲方式是指在程序運行期間根據需要進行動態的分配存儲空間的方式。動態存儲變數是在程序執行過程中,使用它時才分配存儲單元,
使用完畢立即釋放。
典型的例子是函數的形式參數,在函數定義時並不給形參分配存儲單元,只是在函數被調用時,才予以分配,
調用函數完畢立即釋放。如果一個函數被多次調用,則反復地分配、
釋放形參變數的存儲單元。
靜態存儲方式
所謂靜態存儲方式是指在程序編譯期間分配固定的存儲空間的方式。該存儲方式通常是在變數定義時就分定存儲單元並一直保持不變,
直至整個程序結束。全局變數,靜態變數等就屬於此類存儲方式。
總結
從以上分析可知,
靜態存儲變數是一直存在的,
而動態存儲變數則時而存在時而消失。我們又把這種由於變數存儲方式不同而產生的特性稱變數的生存期。
生存期表示了變數存在的時間。
生存期和作用域是從時間和空間這兩個不同的角度來描述變數的特性,這兩者既有聯系,又有區別。
一個變數究竟屬於哪一種存儲方式,
並不能僅從其作用域來判斷,還應有明確的存儲類型說明。
D. 在c語言中靜態存儲單元與動態存儲單元有什麼區別
曬曬
靜態的內存使用的是棧空間內存,不用程序員自己來分配.動態內存由程序員根據需要來自己分配並收回.
最大的區別在於動態的內存分配時候會用new關鍵字或malloc或calloc函數,之所以要程序員自己來分配內存是由於有時候不能確定程序要使用多少內存,比如要通過用戶或者文件或者資料庫中的查詢結果來確定使用多少數據,這時候程序員無法在程序的編寫的時候就把內存給固定分配出來.這時候必須得讓程序在運行的時候自己來為自己找到可用的內存,就一定要用動態的方式來分配內存.
舉個例子,根據用戶的輸入一個整數來確定用戶要輸入的數組維數,這個整數不是一定確定的數值,我們可以用一個變數n來表示,並用它接受用戶的輸入,再根據n來生成一個整數數組.程序不能寫成int
array[n];的形式,這樣程序是不能編譯通過的,這是因為n是一個不確定的數值.只能用new或malloc來通過用戶的輸入來分配內存.可以寫成這樣:
int
n;
cout
<<
"input
n:";
cin
>>
n;
cout
<<
endl;
int*
iArray
=
new
int[n];
for
(int
i
=
0;
i
<
n;
i++)
{
cin
>>iArray[i];
E. 動態存儲區與靜態存儲區的區別
我理解吧,這個動態跟靜態主要是針對指針而言的。而且對於單個變數來說,動態跟靜態的概念體現的不是特別清楚,下面主要介紹數組吧。
如果你聲明一個數組int a[100],那麼這個數組的大小就是100,在內存中的位置也固定,如果後來發現數組不夠大,你就只能重新定義一個更大的數組,而不能直接改變數組a的大小。這就是靜態存儲。
如果你聲明一個指針int *p,一開始你想開辟一個100的數組,就寫p = new int[100],後面發現100不夠大,你可以先delete []p,把原來的空間釋放掉,然後讓p = new int[200],p就會指向一個大小為200的數組,這個數組的大小以及在內存中的位置可以根據需要不斷變化。這就是動態存儲。
F. 何為靜態存儲器、動態存儲器,它們的區別是什麼
靜態存儲器與動態存儲器主要性能比較如下表:
靜態和動態存儲器晶元特性比較
SRAM DRAM
存儲信息 觸發器 電容
破壞性讀出 非 是
需要刷新 不要 需要
送行列地址 同時送 分兩次送
運行速度 快 慢
集成度 低 高
發熱量 大 小
存儲成本 高 低
動態存儲器的定期刷新:在不進行讀寫操作時,DRAM 存儲器的各單元處於斷電狀態,由於漏電的存在,保存在電容CS 上的電荷會慢慢地漏掉,為此必須定時予以補充,稱為刷新操作
G. 動態存儲器和靜態存儲器哪個快
靜態存儲器快
靜態RAM是靠雙穩態觸發器來記憶信息的;動態RAM是靠MOS電路中的柵極電容來記憶信息的。
由於電容上的電荷會泄漏,需要定時給與補充,所以動態RAM需要設置刷新電路。但動態RAM比靜態RAM集成度高、功耗低,從而成本也低,適於作大容量存儲器。
所以主內存通常採用動態RAM,而高速緩沖存儲器(Cache)則使用靜態RAM。
另外,內存還應用於顯卡、音效卡及CMOS等設備中,用於充當設備緩存或保存固定的程序及數據。
H. C語言動態和靜態存儲類別的區別
主要區別在於存儲區域和作用時間。
C語言的數據區分為靜態存儲區與動態存儲區。
靜態存儲是指在程序運行期間給變數分配固定存儲空間的方式。如全局變數存放在靜態存儲區中,程序運行時分配空間,程序運行完釋放。
動態存儲是指在程序運行時根據實際需要動態分配存儲空間的方式。如形式參數存放在動態存儲區中,在函數調用時分配空間,調用完成釋放。
I. C語言動態和靜態存儲類別的區別
SRAM的特點是工作速度快,只要電源不撤除,寫入SRAM的信息就不會消失,不需要刷新電路,同時在讀出時不破壞原來存放的信息,一經寫入可多次讀出,但集成度較低,功耗較大。SRAM一般用來作為計算機中的高速緩沖存儲器(Cache)。 DRAM是動態隨機存儲器(Dynamic Random Access Memory),它是利用場效應管的柵極對其襯底間的分布電容來保存信息,以存儲電荷的多少,即電容端電壓的高低來表示「1」和「0」。DRAM每個存儲單元所需的場效應管較少,常見的有4管,3管和單管型DRAM。因此它的集成度較高,功耗也較低,但缺點是保存在DRAM中的信息__場效應管柵極分布電容里的信息隨著電容器的漏電而會逐漸消失,一般信息保存時間為2ms左右。為了保存DRAM中的信息,必須每隔1~2ms對其刷新一次。因此,採用 DRAM的計算機必須配置動態刷新電路,防止信息丟失。DRAM一般用作計算機中的主存儲器。